1. 程式人生 > >mysql中date_add與date_sub函式使用詳解

mysql中date_add與date_sub函式使用詳解

           mysql中date_add與date_sub函式使用詳解

 

轉載:http://www.111cn.net/database/mysql/52936.htm

在mysql中date_add與date_sub函式分別date_add是對日期加減操作而date_sub是從日期減去指定的時間間隔了,下面我來介紹幾個例項大家一起看看

mysql 中 DATE_ADD(date,INTERVAL expr type) 和 DATE_SUB(date,INTERVAL expr type) 
這些函式執行日期運算。 date 是一個 DATETIME 或DATE值,用來指定起始時間。 expr 是一個表示式,用來指定從起始日期新增或減去的時間間隔值。 Expr是一個字串;對於負值的時間間隔,它可以以一個 ‘-’開頭。 type 為關鍵詞,它指示了表示式被解釋的方式。 
關鍵詞INTERVA及 type 分類符均不區分大小寫。

mysql中內建函式date_add和date_sub能對指定的時間進行增加或減少一個指定的時間間隔,語法如下:

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如下表: 
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,同時可以使用負數。複合型的用法如下:

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                                     |
+------------------------------------------------+