SQL DATEDIFF

概要:このチュートリアルでは、SQLのDATEDIFF()関数を使用して2つの日付の差を計算する方法を学習します。

構文

2つの日付の差を計算するには、DATEDIFF()関数を使用します。以下は、SQL ServerにおけるDATEDIFF()関数の構文を示しています。

DATEDIFF ( datepart , startdate , enddate )
Code language: SQL (Structured Query Language) (sql)

引数

datepart

datepartは、関数が返す日付の一部です。次の表は、SQL Serverで有効な日付の一部を示しています。

有効な日付部分略語
yy、 yyyy
四半期qq、 q
mm、 m
通日dy、 y
dd、 d
wk、 ww
曜日dw、 w
時間hh
mi、 n
ss、 s
ミリ秒ms
マイクロ秒mcs
ナノ秒ns

startdate、 enddate

startdateenddateは、差を求める日付リテラルまたは式です。

戻り値

DATEDIFF()関数は、datepart引数で指定された単位を持つ整数値を返します。

次の例は、2つの日付間の年の数を返します。

SELECT DATEDIFF(year,'2015-01-01','2018-01-01');
Code language: SQL (Structured Query Language) (sql)

結果は次のとおりです。

3
Code language: SQL (Structured Query Language) (sql)

月または日の数を取得するには、最初の引数を月または日に変更します(下記参照)。

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つの日付間の差は2×365 + 366 = 1096日です。

次の例は、DATEDIFF()関数を使用して2つの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)

次の例は、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は、2つの日付間の差を日数でしか返しません。計算では日付の時間部分は無視されます。次の例を参照してください。

SELECT DATEDIFF('2018-08-09','2018-08-18');
Code language: SQL (Structured Query Language) (sql)

結果は9日です。

9
Code language: SQL (Structured Query Language) (sql)

このチュートリアルでは、SQLのDATEDIFF()関数を使用して2つの日付の差を計算する方法を学習しました。

このチュートリアルは役に立ちましたか?