mysql中內置函數date_add和date_sub能對指定的時間進行增長或減小一個指定的時間間隔,語法以下:html
DATE_ADD(date,INTERVAL expr type) DATE_SUB(date,INTERVAL expr type)
其中date是指定的日期,INTERVAL爲關鍵詞,expr是具體的時間間隔,type是時間單位。注意:type能夠複合型的,好比 YEAR_MONTH。若是type不是複合型的,DATE_ADD和DATE_SUB其實能夠通用,由於expr能夠爲一個負數。可用的type以下 表:mysql
MICROSECOND | 間隔單位:毫秒 |
SECOND | 間隔單位:秒 |
MINUTE | 間隔單位:分鐘 |
HOUR | 間隔單位:小時 |
DAY | 間隔單位:天 |
WEEK | 間隔單位:星期 |
MONTH | 間隔單位:月 |
QUARTER | 間隔單位:季度 |
YEAR | 間隔單位:年 |
SECOND_MICROSECOND | 複合型,間隔單位:秒、毫秒,expr能夠用兩個值來分別指定秒和毫秒 |
MINUTE_MICROSECOND | 複合型,間隔單位:分、毫秒 |
MINUTE_SECOND | 複合型,間隔單位:分、秒 |
HOUR_MICROSECOND | 複合型,間隔單位:小時、毫秒 |
HOUR_SECOND | 複合型,間隔單位:小時、秒 |
HOUR_MINUTE | 複合型,間隔單位:小時分 |
DAY_MICROSECOND | 複合型,間隔單位:天、毫秒 |
DAY_SECOND | 複合型,間隔單位:天、秒 |
DAY_MINUTE | 複合型,間隔單位:天、分 |
DAY_HOUR | 複合型,間隔單位:天、小時 |
YEAR_MONTH | 複合型,間隔單位:年、月 |
對應複合型的type,須要使用引號對兩個參數進行引用起來,中間用任何非數字字符做爲間隔便可,而且不能使用負數。可是時間間隔只指定了一個值, 那麼也能正常工做,可是對應XXX_YYY使用的單位爲YYY,也就至關於單一單位的type,同時能夠使用負數。複合型的用法以下:sql
mysql> select date_add('2013-01-18', interval '1 2' YEAR_MONTH); +-----------------------------------------------------+ | date_add('2013-01-18', interval '1 2' YEAR_MONTH) | +-----------------------------------------------------+ | 2014-03-18 | +-----------------------------------------------------+ mysql> select date_add('2013-01-18', interval '1-2' YEAR_MONTH); +----------------------------------------------------+ | date_add('2013-01-18', interval '1-2' YEAR_MONTH) | +----------------------------------------------------+ | 2014-03-18 | +----------------------------------------------------+ mysql> select date_add('2013-01-18', interval '1,2' YEAR_MONTH); +---------------------------------------------------+ | date_add('2013-01-18', interval '1,2' YEAR_MONTH) | +---------------------------------------------------+ | 2014-03-18 | +---------------------------------------------------+ mysql> select date_add('2013-01-18', interval 1 YEAR_MONTH); +-----------------------------------------------+ | date_add('2013-01-18', interval 1 YEAR_MONTH) | +-----------------------------------------------+ | 2013-02-18 | +-----------------------------------------------+ mysql> select date_add('2013-01-18', interval -1 YEAR_MONTH); +------------------------------------------------+ | date_add('2013-01-18', interval -1 YEAR_MONTH) | +------------------------------------------------+ | 2012-12-18 | +------------------------------------------------+