DATE_ADD() 与 DATE_SUB() 日期的加法与減法

DATE_ADD() 与 DATE_SUB() 日期的加法与減法

DATE_ADD(date,INTERVAL expr unit)
DATE_SUB(date,INTERVAL expr unit)
date 傳入的日期
expr 傳入的表達式
unit 傳入的單位

這些函數執行日期運算。 date 是一個 DATETIME 或DATE值,用來指定起始時間的字串。expr 是一個表達式,用來指定從起始日期添加或減去的時間間隔值。對於負值的時間間隔,可以用『-』開頭。 unit 為關鍵詞,指定數值 expr 計算時的單位。
INTERVAL 只是 unit 的說明符號,不用太在意他。
type 值 建議的 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’

回傳值根據 date 參數:

如果 date 參數是一個 DATE 值,而你的計算只會包括 YEAR、MONTH和DAY部分(沒有時間部分), 其結果是一個DATE 值。否則,結果將是一個 DATETIME 值。
如果傳入的參數是 DATETIME或是TIMESTAMP格式,或是傳入DATE格式時,unit使用HOUR、MINUTE、SECOND,將回傳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 出現在『-』左邊計算結果是無意義的。
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’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值