MySQL的Data_ADD函數(shù)與日期格式化函數(shù)說明
- DATE_ADD(date,INTERVAL expr type) DATE_SUB(date,INTERVAL expr type)
這些函數(shù)執(zhí)行日期運(yùn)算。 date 是一個(gè) DATETIME 或DATE值,用來指定起始時(shí)間。 expr 是一個(gè)表達(dá)式,用來指定從起始日期添加或減去的時(shí)間間隔值。 Expr是一個(gè)字符串;對(duì)于負(fù)值的時(shí)間間隔,它可以以一個(gè) ‘-'開頭。 type 為關(guān)鍵詞,它指示了表達(dá)式被解釋的方式。
關(guān)鍵詞INTERVA及 type 分類符均不區(qū)分大小寫。
以下表顯示了type 和expr 參數(shù)的關(guān)系:
|
type 值 |
預(yù)期的 expr 格式 |
|
MICROSECOND |
MICROSECONDS |
|
SECOND |
SECONDS |
|
MINUTE |
MINUTES |
|
HOUR |
HOURS |
|
DAY |
DAYS |
|
WEEK |
WEEKS |
|
MONTH |
MONTHS |
|
QUARTER |
QUARTERS |
|
YEAR |
YEARS |
|
SECOND_MICROSECOND |
'SECONDS.MICROSECONDS' |
|
MINUTE_MICROSECOND |
'MINUTES.MICROSECONDS' |
|
MINUTE_SECOND |
'MINUTES:SECONDS' |
|
HOUR_MICROSECOND |
'HOURS.MICROSECONDS' |
|
HOUR_SECOND |
'HOURS:MINUTES:SECONDS' |
|
HOUR_MINUTE |
'HOURS:MINUTES' |
|
DAY_MICROSECOND |
'DAYS.MICROSECONDS' |
|
DAY_SECOND |
'DAYS HOURS:MINUTES:SECONDS' |
|
DAY_MINUTE |
'DAYS HOURS:MINUTES' |
|
DAY_HOUR |
'DAYS HOURS' |
|
YEAR_MONTH |
'YEARS-MONTHS' |
MySQL 允許任何expr 格式中的標(biāo)點(diǎn)分隔符。表中所顯示的是建議的 分隔符。若 date 參數(shù)是一個(gè) DATE 值,而你的計(jì)算只會(huì)包括 YEAR、MONTH和DAY部分(即, 沒有時(shí)間部分), 其結(jié)果是一個(gè)DATE 值。否則,結(jié)果將是一個(gè) DATETIME值。
若位于另一端的表達(dá)式是一個(gè)日期或日期時(shí)間值 , 則INTERVAL expr type只允許在 + 操作符的兩端。對(duì)于 –操作符, INTERVAL expr type 只允許在其右端,原因是從一個(gè)時(shí)間間隔中提取一個(gè)日期或日期時(shí)間值是毫無意義的。 (見下面的例子)。
mysql> SELECT '1997-12-31 23:59:59' + INTERVAL 1 SECOND;
-> '1998-01-01 00:00:00'
mysql> SELECT INTERVAL 1 DAY + '1997-12-31';
-> '1998-01-01'
mysql> SELECT '1998-01-01' - INTERVAL 1 SECOND;
-> '1997-12-31 23:59:59'
mysql> SELECT DATE_ADD('1997-12-31 23:59:59',
-> INTERVAL 1 SECOND);
-> '1998-01-01 00:00:00'
mysql> SELECT DATE_ADD('1997-12-31 23:59:59',
-> INTERVAL 1 DAY);
-> '1998-01-01 23:59:59'
mysql> SELECT DATE_ADD('1997-12-31 23:59:59',
-> INTERVAL '1:1' MINUTE_SECOND);
-> '1998-01-01 00:01:00'
mysql> SELECT DATE_SUB('1998-01-01 00:00:00',
-> INTERVAL '1 1:1:1' DAY_SECOND);
-> '1997-12-30 22:58:59'
mysql> SELECT DATE_ADD('1998-01-01 00:00:00',
-> INTERVAL '-1 10' DAY_HOUR);
-> '1997-12-30 14:00:00'
mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
-> '1997-12-02'
mysql> SELECT DATE_ADD('1992-12-31 23:59:59.000002',
-> INTERVAL '1.999999' SECOND_MICROSECOND);
-> '1993-01-01 00:00:01.000001'
若你指定了一個(gè)過于短的時(shí)間間隔值 (不包括type 關(guān)鍵詞所預(yù)期的所有時(shí)間間隔部分), MySQL 假定你已經(jīng)省去了時(shí)間間隔值的最左部分。 例如,你指定了一種類型的DAY_SECOND, expr 的值預(yù)期應(yīng)當(dāng)具有天、 小時(shí)、分鐘和秒部分。若你指定了一個(gè)類似 '1:10'的值, MySQL 假定天和小時(shí)部分不存在,那么這個(gè)值代表分和秒。換言之, '1:10' DAY_SECOND 被解釋為相當(dāng)于 '1:10' MINUTE_SECOND。這相當(dāng)于 MySQL將TIME 值解釋為所耗費(fèi)的時(shí)間而不是日時(shí)的解釋方式。
假如你對(duì)一個(gè)日期值添加或減去一些含有時(shí)間部分的內(nèi)容,則結(jié)果自動(dòng)轉(zhuǎn)化為一個(gè)日期時(shí)間值:
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 DAY);
-> '1999-01-02'
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR);
-> '1999-01-01 01:00:00'
假如你使用了格式嚴(yán)重錯(cuò)誤的日期,則結(jié)果為 NULL。假如你添加了 MONTH、YEAR_MONTH或YEAR ,而結(jié)果日期中有一天的日期大于添加的月份的日期最大限度,則這個(gè)日期自動(dòng)被調(diào)整為添加月份的最大日期:
mysql> SELECT DATE_ADD('1998-01-30', INTERVAL 1 MONTH);
-> '1998-02-28'
- DATE_FORMAT(date,format)
根據(jù)format 字符串安排date 值的格式。
以下說明符可用在 format 字符串中:
|
說明符 |
說明 |
|
%a |
工作日的縮寫名稱 (Sun..Sat) |
|
%b |
月份的縮寫名稱 (Jan..Dec) |
|
%c |
月份,數(shù)字形式(0..12) |
|
%D |
帶有英語后綴的該月日期 (0th, 1st, 2nd, 3rd, ...) |
|
%d |
該月日期, 數(shù)字形式 (00..31) |
|
%e |
該月日期, 數(shù)字形式(0..31) |
|
%f |
微秒 (000000..999999) |
|
%H |
小時(shí)(00..23) |
|
%h |
小時(shí)(01..12) |
|
%I |
小時(shí) (01..12) |
|
%i |
分鐘,數(shù)字形式 (00..59) |
|
%j |
一年中的天數(shù) (001..366) |
|
%k |
小時(shí) (0..23) |
|
%l |
小時(shí) (1..12) |
|
%M |
月份名稱 (January..December) |
|
%m |
月份, 數(shù)字形式 (00..12) |
|
%p |
上午(AM)或下午( PM) |
|
%r |
時(shí)間 , 12小時(shí)制 (小時(shí)hh:分鐘mm:秒數(shù)ss 后加 AM或PM) |
|
%S |
秒 (00..59) |
|
%s |
秒 (00..59) |
|
%T |
時(shí)間 , 24小時(shí)制 (小時(shí)hh:分鐘mm:秒數(shù)ss) |
|
%U |
周 (00..53), 其中周日為每周的第一天 |
|
%u |
周 (00..53), 其中周一為每周的第一天 |
|
%V |
周 (01..53), 其中周日為每周的第一天 ; 和 %X同時(shí)使用 |
|
%v |
周 (01..53), 其中周一為每周的第一天 ; 和 %x同時(shí)使用 |
|
%W |
工作日名稱 (周日..周六) |
|
%w |
一周中的每日 (0=周日..6=周六) |
|
%X |
該周的年份,其中周日為每周的第一天, 數(shù)字形式,4位數(shù);和%V同時(shí)使用 |
|
%x |
該周的年份,其中周一為每周的第一天, 數(shù)字形式,4位數(shù);和%v同時(shí)使用 |
|
%Y |
年份, 數(shù)字形式,4位數(shù) |
|
%y |
年份, 數(shù)字形式 (2位數(shù)) |
|
%% |
‘%'文字字符 |
所有其它字符都被復(fù)制到結(jié)果中,無需作出解釋。
注意, ‘%'字符要求在格式指定符之前。
月份和日期說明符的范圍從零開始,原因是 MySQL允許存儲(chǔ)諸如 '2004-00-00'的不完全日期.
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');-> 'Saturday October 1997'
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');-> '22:23:00'
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00','%D %y %a %d %m %b %j');
-> '4th 97 Sat 04 10 Oct 277'
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00','%H %k %I %r %T %S %w');
-> '22 22 10 10:23:00 PM 22:23:00 00 6'
mysql> SELECT DATE_FORMAT('1999-01-01', '%X %V');-> '1998 52'
相關(guān)文章
MySQL錯(cuò)誤代碼1862 your password has expired的解決方法
這篇文章主要為大家詳細(xì)介紹了MySQL錯(cuò)誤代碼1862 your password has expired的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
在Mysql環(huán)境下對(duì)數(shù)據(jù)進(jìn)行增刪改查的操作方法
本文介紹了在MySQL環(huán)境下對(duì)數(shù)據(jù)進(jìn)行增刪改查的基本操作,包括插入數(shù)據(jù)、修改數(shù)據(jù)、刪除數(shù)據(jù)、數(shù)據(jù)查詢(基本查詢、連接查詢、聚合函數(shù)查詢、子查詢)等,并舉例說明了每種操作的具體用法,感興趣的朋友跟隨小編一起看看吧2025-02-02
mariadb集群搭建---Galera Cluster+ProxySQL教程
這篇文章主要介紹了mariadb集群搭建---Galera Cluster+ProxySQL教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
mysql err錯(cuò)誤提示You need to use --log-
今天在檢查mysql服務(wù)器錯(cuò)誤日志的時(shí)候發(fā)現(xiàn)You need to use --log-bin to make --binlog-format work,通過如下方法解決了特分享一下2023-06-06
解決Mysql收縮事務(wù)日志和日志文件過大無法收縮問題
這篇文章主要介紹了解決Mysql收縮事務(wù)日志和日志文件過大無法收縮問題,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-08-08
在MySQL中創(chuàng)建實(shí)現(xiàn)自增的序列(Sequence)的教程
這篇文章主要介紹了在MySQL中創(chuàng)建實(shí)現(xiàn)自增的序列(Sequence)的教程,分別列舉了兩個(gè)實(shí)例并簡(jiǎn)單討論了一些限制因素,需要的朋友可以參考下2015-12-12
mysql中的utf8與utf8mb4存儲(chǔ)及區(qū)別
本文主要介紹了mysql中的utf8與utf8mb4存儲(chǔ)及區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
使用MySQL建立外鍵約束時(shí)報(bào)錯(cuò)3780的解決方案
在創(chuàng)建MySQL外鍵約束時(shí),報(bào)錯(cuò)3780通常是因?yàn)橹鞅砗蛷谋碇袑?duì)應(yīng)字段的數(shù)據(jù)類型不一致,使用Navicat可視化界面修改數(shù)據(jù)類型,即可解決此問題,這是一個(gè)常見的數(shù)據(jù)庫設(shè)計(jì)錯(cuò)誤,確保數(shù)據(jù)類型一致是關(guān)鍵2024-11-11

