MySQL date_sub()函数
轉(zhuǎn)載自??MySQL date_sub()函數(shù)
MySQL DATE_SUB函數(shù)簡介
DATE_SUB()函數(shù)從DATE或DATETIME值中減去時(shí)間值(或間隔)。 下面說明了DATE_SUB()函數(shù)的語法:
DATE_SUB(start_date,INTERVAL expr unit);DATE_SUB()函數(shù)接受兩個(gè)參數(shù):
- start_date是DATE或DATETIME的起始值。
- expr是一個(gè)字符串,用于確定從起始日期減去的間隔值。unit是expr可解析的間隔單位,例如DAY,HOUR等
以下語句使用DATE_SUB()函數(shù)從2017年7月4日減去1天:
mysql> SELECT DATE_SUB('2017-09-04',INTERVAL 1 DAY) result; +------------+ | result | +------------+ | 2017-09-03 | +------------+ 1 row in set -- 求昨天的日期值: 將今天的日期值減去 1 天 mysql> SELECT DATE_SUB(curdate(),INTERVAL 1 DAY) result; +------------+ | result | +------------+ | 2017-08-09 | +------------+ 1 row in set在這個(gè)例子中,開始日期是2017-09-04,它是yyyy-mm-dd格式。?INTERVAL 1 DAY被解析為1天的時(shí)間間隔。DATE_SUB()函數(shù)的結(jié)果是2017-09-03的字符串值。
類似于DATE_ADD()函數(shù),DATE_SUB()函數(shù)的返回值的數(shù)據(jù)類型可以是:
- 如果第一個(gè)參數(shù)是DATETIME,則返回值應(yīng)為DATETIME,或者該間隔具有時(shí)間元素,如小時(shí),分鐘,秒等。
- 否則返回一個(gè)字符串。
請參閱以下示例:
示例-1
mysql> SELECT DATE_SUB('2017-09-04',INTERVAL 3 HOUR) result; +---------------------+ | result | +---------------------+ | 2017-09-03 21:00:00 | +---------------------+ 1 row in set因?yàn)殚g隔為3小時(shí),DATE_SUB函數(shù)的結(jié)果為DATETIME值。
示例-2 MySQL DATE_SUB:負(fù)間隔值
expr在間隔值可以為正或負(fù)數(shù)值。 如果expr為負(fù)數(shù),則DATE_SUB()函數(shù)的行為與DATE_ADD()函數(shù)類似,如下例所示:
mysql> SELECT DATE_SUB('2017-07-03',INTERVAL -1 DAY) result; +------------+ | result | +------------+ | 2017-07-04 | +------------+ 1 row in set示例-3 MySQL DATE_SUB:無效或格式錯(cuò)誤的日期
如果DATE_SUB()函數(shù)的第一個(gè)參數(shù)格式錯(cuò)誤,日期無效或NULL,則DATE_SUB()函數(shù)返回NULL。
在這個(gè)例子中,2017-02-29是一個(gè)無效的日期,因此結(jié)果為NULL。 此外,MySQL發(fā)出警告,可通過以下查詢查看語句。
mysql> SHOW WARNINGS; +---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2017-02-29' | +---------+------+----------------------------------------+ 1 row in set以下示例演示了將異常日期或NULL傳遞給DATE_SUB函數(shù),效果如下所示:
mysql> SELECT DATE_SUB('03/07/2017', INTERVAL 1 DAY) result; +--------+ | result | +--------+ | NULL | +--------+ 1 row in setmysql> SELECT DATE_SUB(NULL, INTERVAL 1 DAY) result; +--------+ | result | +--------+ | NULL | +--------+ 1 row in set示例-3 MySQL DATE_SUB:自動(dòng)調(diào)整日
如果從最大日期的日期減去MONTH,YEAR或YEAR_MONTH的間隔,則該日期將被調(diào)整為新月份的最大日期。
下面來看看以下語句:
mysql> SELECT DATE_SUB('2017-03-30', INTERVAL 1 MONTH) result; +------------+ | result | +------------+ | 2017-02-28 | +------------+ 1 row in set在這個(gè)例子中,我們從2017年3月30日起減去1個(gè)月,結(jié)果是2017年2月28日。這一天被調(diào)整到28日而不是30日,因?yàn)?017年2月份只有28天。
在本教程中,您已經(jīng)學(xué)習(xí)了如何使用MySQL?DATE_SUB()函數(shù)從DATE或DATETIME值中減去時(shí)間間隔。
總結(jié)
以上是生活随笔為你收集整理的MySQL date_sub()函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 9个最佳乐队标志以及如何免费获得[202
- 下一篇: MySQL date_format()函