SQL Server中提供了一個DATEDIFF()函數用來計算兩個日期之間的差值。
DATEDIFF(datepart, startdate, enddate)
其中,datepart參數表示要計算差值的部分,startdate參數表示要計算差值的開始日期(被減數),enddate參數表示要計算差值的結束日期(減數)。
SELECT DATEDIFF(day, '2019-05-20', '2019-05-22'); -- 2
datepart參數提供了多個候選值,方便計算各個日期部分的差值。
datepart | 縮寫 | 全稱 |
---|---|---|
年 | yy, yyyy | year |
季度 | qq, q | quarter |
月 | mm, m | month |
年中的日 | dy, y | dayofyear |
日 | dd, d | day |
周 | wk, ww | week |
星期 | dw, w | weekday |
小時 | hh | hour |
分鍾 | mi, n | minute |
秒 | ss, s | second |
毫秒 | ms | millisecond |
微妙 | mcs | microsecond |
納秒 | ns | nanosecond |
這里的精度從上往下依次提高,精度越大,時間范圍應該設置的越小,否則會報【[S0000][535] datediff 函數導致溢出。用於分隔兩個日期/時間實例的日期部分的數字太大。請嘗試使用日期部分精度較低的 datediff。】這樣的錯誤。
SELECT DATEDIFF(yy, '2019-05-20', '2020-05-22'); -- 1
另外,如果要計算差值的開始日期和要計算差值的結束日期中,指定的計算部分為開始日期大於結束日期,則返回結果是負數。
SELECT DATEDIFF(yy, '2023-05-20', '2020-05-22'); -- -3
"因為經歷過了,所以才波瀾不驚。"