MySQL DATEDIFF函數(shù)獲取兩個(gè)日期的時(shí)間間隔的方法
描述
返回兩個(gè)日期之間的時(shí)間間隔。
語(yǔ)法
DateDiff(interval, date1, date2 [ ,firstdayofweek[ , firstweekofyear]] )
DateDiff 函數(shù)的語(yǔ)法有以下參數(shù):
參數(shù) | 描述 |
interval | 必選。字符串表達(dá)式,表示用于計(jì)算 date1 和 date2 之間的時(shí)間間隔。有關(guān)數(shù)值,請(qǐng)參閱“設(shè)置”部分。 |
date1, date2 | 必選。日期表達(dá)式。用于計(jì)算的兩個(gè)日期。 |
firstdayofweek | 可選。指定星期中第一天的常數(shù)。如果沒(méi)有指定,則默認(rèn)為星期日。有關(guān)數(shù)值,請(qǐng)參閱“設(shè)置”部分。 |
firstweekofyear | 可選。指定一年中第一周的常數(shù)。如果沒(méi)有指定,則默認(rèn)為 1 月 1 日所在的星期。有關(guān)數(shù)值,請(qǐng)參閱“設(shè)置”部分。 |
設(shè)置
interval 參數(shù)可以有以下值:
設(shè)置 | 描述 |
yyyy | 年 |
q | 季度 |
m | 月 |
y | 一年的日數(shù) |
d | 日 |
w | 一周的日數(shù) |
ww | 周 |
h | 小時(shí) |
m | 分鐘 |
s | 秒 |
firstdayofweek 參數(shù)可以有以下值:
常數(shù) | 值 | 描述 |
vbUseSystem | 0 | 使用區(qū)域語(yǔ)言支持 (NLS) API 設(shè)置。 |
vbSunday | 1 | 星期日(默認(rèn)) |
vbMonday | 2 | 星期一 |
vbTuesday | 3 | 星期二 |
vbWednesday | 4 | 星期三 |
vbThursday | 5 | 星期四 |
vbFriday | 6 | 星期五 |
vbSaturday | 7 | 星期六 |
firstweekofyear 參數(shù)可以有以下值:
常數(shù) | 值 | 描述 |
vbUseSystem | 0 | 使用區(qū)域語(yǔ)言支持 (NLS) API 設(shè)置。 |
vbFirstJan1 | 1 | 由 1 月 1 日所在的星期開(kāi)始(默認(rèn))。 |
vbFirstFourDays | 2 | 由在新年中至少有四天的第一周開(kāi)始。 |
vbFirstFullWeek | 3 | 由在新的一年中第一個(gè)完整的周開(kāi)始。 |
說(shuō)明
DateDiff 函數(shù)用于判斷在兩個(gè)日期之間存在的指定時(shí)間間隔的數(shù)目。例如可以使用 DateDiff 計(jì)算兩個(gè)日期相差的天數(shù),或者當(dāng)天到當(dāng)年最后一天之間的星期數(shù)。
要計(jì)算 date1 和 date2 相差的天數(shù),可以使用“一年的日數(shù)”(“y”)或“日”(“d”)。當(dāng) interval 為“一周的日數(shù)”(“w”)時(shí),DateDiff 返回兩個(gè)日期之間的星期數(shù)。如果 date1 是星期一,則DateDiff 計(jì)算到 date2 之前星期一的數(shù)目。此結(jié)果包含 date2 而不包含 date1。如果 interval 是“周”(“ww”),則 DateDiff 函數(shù)返回日歷表中兩個(gè)日期之間的星期數(shù)。函數(shù)計(jì)算 date1 和 date2之間星期日的數(shù)目。如果 date2 是星期日,DateDiff 將計(jì)算 date2,但即使 date1 是星期日,也不會(huì)計(jì)算 date1。
如果 date1 晚于 date2,則 DateDiff 函數(shù)返回負(fù)數(shù)。
firstdayofweek 參數(shù)會(huì)對(duì)使用“w”和“ww”間隔符號(hào)的計(jì)算產(chǎn)生影響。
如果 date1 或 date2 是日期文字,則指定的年度會(huì)成為日期的固定部分。但是如果 date1 或 date2 被包括在引號(hào) (" ") 中并且省略年份,則在代碼中每次計(jì)算 date1 或 date2 表達(dá)式時(shí),將插入當(dāng)前年份。這樣就可以編寫(xiě)適用于不同年份的程序代碼。
在 interval 為“年”(“yyyy”)時(shí),比較 12 月 31 日和來(lái)年的 1 月 1 日,雖然實(shí)際上只相差一天,DateDiff 返回 1 表示相差一個(gè)年份。
MySQL 中 DATEDIFF(date1,date2) 返回起始時(shí)間 date1 和結(jié)束時(shí)間 date2 之間的天數(shù)。date1 和 date2 為日期或 date-and-time 表達(dá)式。計(jì)算時(shí)只用到這些值的日期部分。
【實(shí)例】使用 DATEDIFF() 函數(shù)計(jì)算兩個(gè)日期之間的間隔天數(shù),輸入的 SQL 語(yǔ)句和執(zhí)行結(jié)果如下所示。
mysql> SELECT DATEDIFF('2017-11-30','2017-11-29') AS COL1, -> DATEDIFF('2017-11-30','2017-12-15') AS col2; +------+------+ | COL1 | col2 | +------+------+ | 1 | -15 | +------+------+ 1 row in set (0.00 sec)
由運(yùn)行結(jié)果可知,DATEDIFF() 函數(shù)返回 date1-date2 后的值,因此 DATEDIFF('2017-11-30','2017-11-29') 的返回值為 1,DATEDIFF('2017-11-30 23:59:59','2017-12-15') 的返回值為 -15。
到此這篇關(guān)于MySQL DATEDIFF函數(shù)獲取兩個(gè)日期的時(shí)間間隔的方法的文章就介紹到這了,更多相關(guān)MySQL DATEDIFF日期時(shí)間間隔內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
教你自動(dòng)恢復(fù)MySQL數(shù)據(jù)庫(kù)的日志文件(binlog)
如果MySQL服務(wù)器啟用了二進(jìn)制日志,你可以使用mysqlbinlog工具來(lái)恢復(fù)從指定的時(shí)間點(diǎn)開(kāi)始2014-05-05mysql unsigned 用法及相減出現(xiàn)補(bǔ)數(shù)溢出解決方法
unsigned表示無(wú)符號(hào)的意思,也就是非負(fù)數(shù),只用于整型并且unsigned 是MYSQL自定義的類(lèi)型,非標(biāo)準(zhǔn)SQL。用途1是紅苕說(shuō)的起到約束數(shù)值的作用,2是可以增加數(shù)值范圍(相當(dāng)于把負(fù)數(shù)那部分加到正數(shù)上)。不過(guò)少用,不方便移植2012-04-04mysql 8.0.16 Win10 zip版本安裝配置圖文教程
這篇文章主要為大家詳細(xì)介紹了mysql 8.0 Win10 zip版本安裝配置圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06Mysql 忘記root密碼和修改root密碼的解決方法(小結(jié))
這篇文章主要介紹了Mysql 忘記root密碼和修改root密碼的解決方法(小結(jié)),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12MySQL5.6.40在CentOS7 64下安裝過(guò)程詳解
這篇文章主要介紹了MySQL5.6.40在CentOS7 64下安裝過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Mysql Workbench查詢mysql數(shù)據(jù)庫(kù)方法
在本篇文章里小編給大家分享了個(gè)關(guān)于Mysql Workbench查詢mysql數(shù)據(jù)庫(kù)方法和步驟,有需要的朋友們學(xué)習(xí)下。2019-03-03mysql按照天統(tǒng)計(jì)報(bào)表當(dāng)天沒(méi)有數(shù)據(jù)填0的實(shí)現(xiàn)代碼
這篇文章主要介紹了mysql按照天統(tǒng)計(jì)報(bào)表當(dāng)天沒(méi)有數(shù)據(jù)填0的實(shí)現(xiàn)方法,需要的朋友可以參考下2018-01-01