DATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)
date 傳入的日期
expr 傳入的單位值
unit 傳入的單位
INTERVAL 是一個KEY

unitexpr
MICROSECONDMICROSECONDS
SECONDSECONDS
MINUTEMINUTES
HOURHOURS
DAYDAYS
WEEKWEEKS
MONTHMONTHS
QUARTERQUARTERS
YEARYEARS
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'

 

 
回傳值根據 date 參數:
如果 date 參數是一個 DATE 值,
而你的計算只會包括 YEARMONTHDAY部分(沒有時間部分), 
其結果是一個DATE 值。否則,
結果將是一個 DATETIME 值。
如果傳入的參數是 DATETIME或是TIMESTAMP格式,
或是傳入DATE格式時,
unit使用HOURMINUTESECOND,將回傳DATETIME格式。
否則以字串格式回傳。
 
要確定回傳結果是 DATETIME 格式,可以用CAST()將參數 date 轉為DATETIME 格式。
MySQL 允許 expr 中使用任何標點符號。上表中所顯示的是建議的分隔符號。
日期運算也允許使用 INTERVAL 關鍵字與 + 或 - 的符號來進行。
date + INTERVAL expr unit
date - INTERVAL expr unit
如果位於另一端的表達式是一個日期或日期時間值,
INTERVAL expr unit 關鍵字允許出現在『+』的兩端。
但是只允許 INTERVAL expr unit 關鍵字允許出現在『-』的右邊,
因為 INTERVAL expr unit 出現在『-』左邊計算結果是無意義的。
 
SELECT '2011-12-31 23:59:59' + INTERVAL 1 SECOND;
'2012-01-01 00:00:00'
 
SELECT INTERVAL 1 DAY + '2011-12-31';
'2012-01-01'
 
SELECT '2011-01-01' - INTERVAL 1 SECOND;
'2010-12-31 23:59:59'
 
SELECT DATE_ADD('2011-12-31 23:59:59',INTERVAL 1 SECOND);
'2012-01-01 00:00:00'
 
SELECT DATE_ADD('2011-12-31 23:59:59',INTERVAL 1 DAY);
'2012-01-01 23:59:59'
 
SELECT DATE_ADD('2011-12-31 23:59:59',INTERVAL '1:1' MINUTE_SECOND);
'2012-01-01 00:01:00'
 
SELECT DATE_SUB('2011-01-01 00:00:00',INTERVAL '1 1:1:1' DAY_SECOND);
'2010-12-30 22:58:59'
 
SELECT DATE_ADD('2011-01-01 00:00:00',INTERVAL '-1 10' DAY_HOUR);
'2010-12-30 14:00:00'
 
SELECT DATE_SUB('2011-01-02', INTERVAL 31 DAY);
'2010-12-02'
 
SELECT DATE_ADD('2011-12-31 23:59:59.000002',INTERVAL '1.999999' SECOND_MICROSECOND);
'2012-01-01 00:00:01.000001'





 















其它文章

arrow
arrow

    PG Levin Li 發表在 痞客邦 留言(0) 人氣()