MySQL的Data_ADD函數(shù)與日期格式化函數(shù)說(shuō)明
- DATE_ADD(date,INTERVAL expr type) DATE_SUB(date,INTERVAL expr type)
這些函數(shù)執(zhí)行日期運(yùn)算。 date 是一個(gè) DATETIME 或DATE值,用來(lái)指定起始時(shí)間。 expr 是一個(gè)表達(dá)式,用來(lái)指定從起始日期添加或減去的時(shí)間間隔值。 Expr是一個(gè)字符串;對(duì)于負(fù)值的時(shí)間間隔,它可以以一個(gè) ‘-'開(kāi)頭。 type 為關(guān)鍵詞,它指示了表達(dá)式被解釋的方式。
關(guān)鍵詞INTERVA及 type 分類符均不區(qū)分大小寫(xiě)。
以下表顯示了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部分(即, 沒(méi)有時(shí)間部分), 其結(jié)果是一個(gè)DATE 值。否則,結(jié)果將是一個(gè) DATETIME值。
若位于另一端的表達(dá)式是一個(gè)日期或日期時(shí)間值 , 則INTERVAL expr type只允許在 + 操作符的兩端。對(duì)于 –操作符, INTERVAL expr type 只允許在其右端,原因是從一個(gè)時(shí)間間隔中提取一個(gè)日期或日期時(shí)間值是毫無(wú)意義的。 (見(jiàn)下面的例子)。
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è)過(guò)于短的時(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 值的格式。
以下說(shuō)明符可用在 format 字符串中:
說(shuō)明符 |
說(shuō)明 |
%a |
工作日的縮寫(xiě)名稱 (Sun..Sat) |
%b |
月份的縮寫(xiě)名稱 (Jan..Dec) |
%c |
月份,數(shù)字形式(0..12) |
%D |
帶有英語(yǔ)后綴的該月日期 (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é)果中,無(wú)需作出解釋。
注意, ‘%'字符要求在格式指定符之前。
月份和日期說(shuō)明符的范圍從零開(kāi)始,原因是 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 5.7臨時(shí)表空間如何玩才能不掉坑里詳解
這篇文章主要給大家介紹了關(guān)于MySQL 5.7臨時(shí)表空間如何玩才能不掉坑里的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起看看吧2018-09-09mysql查詢時(shí)offset過(guò)大影響性能的原因和優(yōu)化詳解
這篇文章主要給大家介紹了關(guān)于mysql查詢時(shí)offset過(guò)大影響性能的原因和優(yōu)化的相關(guān)資料,并在文末跟大家分享了MYSQL中l(wèi)imit,offset的區(qū)別,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06phpstudy無(wú)法啟動(dòng)MySQL數(shù)據(jù)庫(kù)解決方法
這篇文章主要給大家介紹了關(guān)于phpstudy無(wú)法啟動(dòng)MySQL數(shù)據(jù)庫(kù)的解決方法,文中通過(guò)圖文將解決的辦法介紹的非常詳細(xì),對(duì)同樣遇到這個(gè)問(wèn)題的同學(xué)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-05-05Mysql 數(shù)字類型轉(zhuǎn)換函數(shù)
Mysql 數(shù)字類型轉(zhuǎn)換函數(shù),有此需要的朋友可以參考下用法。2009-08-08MySql用DATE_FORMAT截取DateTime字段的日期值
MySql截取DateTime字段的日期值可以使用DATE_FORMAT來(lái)格式化,使用方法如下2014-08-08MySql比較運(yùn)算符正則式匹配REGEXP的詳細(xì)使用詳解
這篇文章主要介紹了MySql比較運(yùn)算符正則式匹配REGEXP的詳細(xì)使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10