MySQL datediff()函数
轉(zhuǎn)載自? ?MySQL datediff()函數(shù)
MySQL DATEDIFF函數(shù)介紹
MySQL?DATEDIFF函數(shù)計(jì)算兩個(gè)DATE,DATETIME或TIMESTAMP值之間的天數(shù)。
MySQL?DATEDIFF函數(shù)的語(yǔ)法如下:
DATEDIFF(date_expression_1,date_expression_2);DATEDIFF函數(shù)接受兩個(gè)任何有效日期或日期時(shí)間值的參數(shù)。如果您傳遞DATETIME或TIMESTAMP值,則DATEDIFF函數(shù)僅將日期部分用于計(jì)算,并忽略時(shí)間部分。
DATEDIFF函數(shù)在許多情況下很有用,例如,您可以計(jì)算產(chǎn)品需要發(fā)送給客戶(hù)的間隔時(shí)間。
MySQL DATEDIFF示例
我們來(lái)看一下使用DATEDIFF函數(shù)的一些例子。
示例-1
mysql> SELECT DATEDIFF('2017-08-17','2017-08-17'); +-------------------------------------+ | DATEDIFF('2017-08-17','2017-08-17') | +-------------------------------------+ | 0 | +-------------------------------------+ 1 row in set示例-2
mysql> SELECT DATEDIFF('2017-08-17','2017-08-08'); +-------------------------------------+ | DATEDIFF('2017-08-17','2017-08-08') | +-------------------------------------+ | 9 | +-------------------------------------+ 1 row in set示例-3
mysql> SELECT DATEDIFF('2017-08-08','2017-08-17'); +-------------------------------------+ | DATEDIFF('2017-08-08','2017-08-17') | +-------------------------------------+ | -9 | +-------------------------------------+ 1 row in set請(qǐng)參閱示例數(shù)據(jù)庫(kù)(yiibaidb)中的以下orders表,其結(jié)構(gòu)如下 -
mysql> desc orders; +----------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------+-------------+------+-----+---------+-------+ | orderNumber | int(11) | NO | PRI | NULL | | | orderDate | date | NO | | NULL | | | requiredDate | date | NO | | NULL | | | shippedDate | date | YES | | NULL | | | status | varchar(15) | NO | | NULL | | | comments | text | YES | | NULL | | | customerNumber | int(11) | NO | MUL | NULL | | +----------------+-------------+------+-----+---------+-------+ 7 rows in set假設(shè)使用DATEDIFF函數(shù)計(jì)算所需日期和訂單發(fā)貨日期之間的天數(shù),如下所示:
SELECT orderNumber, DATEDIFF(requiredDate, shippedDate) daysLeft FROMorders ORDER BY daysLeft DESC;執(zhí)行上面查詢(xún)語(yǔ)句,得到以下結(jié)果 -
+-------------+----------+ | orderNumber | daysLeft | +-------------+----------+ | 10409 | 11 | | 10410 | 10 | | 10105 | 9 | | 10135 | 9 | | 10190 | 9 | **** 此處省略了一大小波數(shù)據(jù) ******** | 10423 | NULL | | 10424 | NULL | | 10425 | NULL | +-------------+----------+ 327 rows in set以下語(yǔ)句將獲取狀態(tài)正在處理(In Process)的所有訂單,并計(jì)算訂單日期和所需日期之間的天數(shù):
SELECT orderNumber,DATEDIFF(requiredDate, orderDate) remaining_days FROMorders WHEREstatus = 'In Process' ORDER BY remaining_days;執(zhí)行上面查詢(xún)語(yǔ)句,得到以下結(jié)果 -
+-------------+----------------+ | orderNumber | remaining_days | +-------------+----------------+ | 10426 | 5 | | 10423 | 6 | | 10425 | 7 | | 10421 | 8 | | 10424 | 8 | | 10420 | 9 | | 10422 | 12 | +-------------+----------------+ 7 rows in set要計(jì)算周或月作為間隔時(shí)間,可以將DATEDIFF函數(shù)的返回值除以7或30,如下查詢(xún)語(yǔ)句:
SELECT orderNumber,ROUND(DATEDIFF(requiredDate, orderDate) / 7, 2) as weeks,ROUND(DATEDIFF(requiredDate, orderDate) / 30,2) as months FROMorders WHEREstatus = 'In Process';執(zhí)行上面查詢(xún)語(yǔ)句,得到以下結(jié)果 -
+-------------+-------+--------+ | orderNumber | weeks | months | +-------------+-------+--------+ | 10420 | 1.29 | 0.3 | | 10421 | 1.14 | 0.27 | | 10422 | 1.71 | 0.4 | | 10423 | 0.86 | 0.2 | | 10424 | 1.14 | 0.27 | | 10425 | 1 | 0.23 | | 10426 | 0.71 | 0.17 | +-------------+-------+--------+ 7 rows in set請(qǐng)注意,ROUND函數(shù)用于舍入結(jié)果。
在本教程中,您已經(jīng)學(xué)習(xí)了如何使用MySQL?DATEDIFF函數(shù)來(lái)計(jì)算兩個(gè)日期值之間的天數(shù)。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的MySQL datediff()函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 作家兼平面设计专家史蒂文·海勒谈成功的标
- 下一篇: MySQL date_add()函数