MySQL計算日期的函數DATE_SUB(d,INTERVAL expr type)

MySQL計算日期的函數DATE_SUB(d,INTERVAL expr type)

DATE_SUB(d,INTERVAL expr type)函數返回起始日期d減去一個時間段後的日期。mysql

expr是一個表達式,用來指定從起始日期添加或減去的時間間隔值。sql

expr是一個字符串。對於負值的時間間隔,它能夠用一個負號「-」開頭。函數

expr表達式與後面的間隔類型type對應。字符串

MySQL中的日期間隔類型以下表所示:table

類型(type值) 含義 expr表達式的形式
YEAR YY
MONTH MM
DAY DD
HOUR hh
MINUTE mm
SECOND ss
YEAR_MONTH 年和月 YY和MM之間用任意符號隔開
DAY_HOUR 日和小時 DD和hh之間用任意符號隔開
DAY_MINUTE 日和分鐘 DD和mm之間用任意符號隔開
DAY_SECOND 日和秒鐘 DD和ss之間用任意符號隔開
HOUR_MINUTE 時和分 hh和mm之間用任意符號隔開
HOUR_SECOND 時和秒 hh和ss之間用任意符號隔開
MINUTE_SECOND 分和秒 mm和ss之間用任意符號隔開

實例1

使用DATE_SUB()函數執行日期減操做。SQL語句以下:class

mysql>SELECT DATE_SUB('2014-10-11 12:00:00',INTERVAL 1 SECOND) AS col1,
    ->DATE_SUB('2014-10-11 23:59:59',INTERVAL '1 1' YEAR_MONTH) AS col2;

執行結果以下:im

使用MySQL DATE_SUB()函數執行日期減操做的效果

從上圖中代碼執行的結果能夠看出:img

  • DATE_SUB('2014-10-11 12:00:00',INTERVAL 1 SECOND)函數將時間減小1秒後,返回的結果爲「2014-10-11 11:59:59」。
  • DATE_SUB('2014-10-11 23:59:59',INTERVAL '1 1' YEAR_MONTH)函數中,時間間隔使用的是YEAR_MONTH;expr表達式中的年和月之間用空格隔開,所以該函數返回的結果是d日期中一年零一個月之前的日期和時間2013-09-11 23:59:59。

實例2

在MySQL中,還能夠使用負數來指定時間。tab

使用DATE_SUB()函數執行日期減操做。SQL語句以下:di

mysql>SELECT DATE_SUB('2014-10-11 11:59:59',INTERVAL -1 SECOND) AS col1,
    ->DATE_SUB('2014-10-11',INTERVAL '-1 -1' YEAR_MONTH) AS col2;

執行結果以下:

使用MySQL DATE_SUB()函數執行日期減操做的效果

從上圖中代碼執行的結果能夠看出:

  • DATE_SUB('2014-10-11 11:59:59',INTERVAL -1 SECOND)函數將時間增長1秒後,返回的結果爲「2014-10-11 12:00:00」。
  • DATE_SUB('2014-10-11',INTERVAL '-1 -1' YEAR_MONTH)函數返回日期d中一年零一個月之後的日期2015-11-11。

由於是對負數進行的減操做,因此實際上進行的是日期的加操做。


提示

DATE_SUB(d,INTERVAL expr type)函數在指定修改的時間段時,也能夠指定負值,負值表明相減,減去一個負值,獲得的是對日期的相加,即返回之後的日期和時間。

DATE_SUB(d,INTERVAL expr type)函數中的type必須在上表中。並且,type必須是上表中的某一項,不能是其中幾項的組合。所以,使用該函數時,必定要注意type的選擇。

DATE_SUB(d,INTERVAL expr type)函數和SUBDATE(d,INTERVAL expr type)函數的做用相同。

相關文章
相關標籤/搜索