摘要:在本教學中,您將學習如何使用 SQL DATEDIFF()
函數來計算兩個日期之間的差異。
語法
要計算兩個日期之間的差異,您可以使用 DATEDIFF()
函數。以下說明 SQL Server 中 DATEDIFF()
函數的語法
DATEDIFF ( datepart , startdate , enddate )
Code language: SQL (Structured Query Language) (sql)
引數
datepart
datepart
是您希望函數傳回的日期部分。下表說明 SQL Server 中有效的日期部分
有效日期部分 | 縮寫 |
---|---|
year (年) | yy, yyyy |
quarter (季) | qq, q |
month (月) | mm, m |
dayofyear (一年中的第幾天) | dy, y |
day (天) | dd, d |
week (週) | wk, ww |
weekday (星期幾) | dw, w |
hour (小時) | hh |
minute (分鐘) | mi, n |
second (秒) | ss, s |
millisecond (毫秒) | ms |
microsecond (微秒) | mcs |
nanosecond (奈秒) | ns |
startdate, enddate
startdate
和 enddate
是您要計算差異的日期常值或運算式。
傳回值
DATEDIFF()
函數會傳回一個整數值,其單位由 datepart
引數指定。
範例
以下範例傳回兩個日期之間的年數
SELECT DATEDIFF(year,'2015-01-01','2018-01-01');
Code language: SQL (Structured Query Language) (sql)
以下是結果
3
Code language: SQL (Structured Query Language) (sql)
要取得月或天數,您可以將第一個引數變更為 month 或 day,如下所示
SELECT DATEDIFF(month,'2015-01-01','2018-01-01'),
DATEDIFF(day,'2015-01-01','2018-01-01');
Code language: SQL (Structured Query Language) (sql)
以下顯示結果
m d
----------- -----------
36 1096
Code language: SQL (Structured Query Language) (sql)
請注意,DATEDIFF()
函數會將閏年納入考量。如結果清楚顯示,由於 2016 年是閏年,因此兩個日期之間的天數差異為 2×365 + 366 = 1096。
以下範例說明如何使用 DATEDIFF()
函數來計算兩個 DATETIME
值之間的小時差異
SELECT DATEDIFF(hour,'2015-01-01 01:00:00','2015-01-01 03:00:00');
Code language: SQL (Structured Query Language) (sql)
結果是
2
Code language: SQL (Structured Query Language) (sql)
考慮以下範例
SELECT DATEDIFF(hour,'2015-01-01 01:00:00','2015-01-01 03:45:00');
Code language: SQL (Structured Query Language) (sql)
它也會傳回 2,因為 DATEDIFF()
函數只會傳回整數。在此情況下,它會截斷分鐘部分,只考慮小時部分。
2
Code language: SQL (Structured Query Language) (sql)
以下範例顯示如何使用 DATEDIFF()
函數來計算員工截至 2018 年 1 月 1 日的服務年資
SELECT first_name,
last_name,
DATEDIFF(year, hire_date, '2018-01-01') year_of_services
FROM employees;
Code language: SQL (Structured Query Language) (sql)
MySQL 中的 DATEDIFF
與 SQL Server 不同,MySQL 的 DATEDIFF()
函數語法略有不同
DATEDIFF(startdate,enddate)
Code language: SQL (Structured Query Language) (sql)
MySQL 只會傳回兩個日期之間的天數差異。它會忽略計算中日期的所有時間部分。請參閱以下範例
SELECT DATEDIFF('2018-08-09','2018-08-18');
Code language: SQL (Structured Query Language) (sql)
結果是九天
9
Code language: SQL (Structured Query Language) (sql)
在本教學中,您已學習如何使用 SQL DATEDIFF()
函數來計算兩個日期之間的差異。
這個教學對您有幫助嗎?