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'
沒有留言:
張貼留言