SQL道場 日付時刻関数 DATEDIFF関数
SQLで日付の差を求めるDATEDIFF関数について記載しています。
対応データベース:MySQL SQL Server Access
DATEDIFF関数の文法
SELECT DATEDIFF(日付要素,日付1,日付2) FROM テーブル (SQL Server)
SELECT DATEDIFF(日付1,日付2) FROM テーブル (MySQL)その他
| 引数 Arguments | 日付要素 Date element | 日付型 Date Type |
| 日付1 Date1 | 文字列型 String type | |
| 日付2 Date2 | 文字列型 String type | |
| 返値 return value | 文字型 日付の差が戻ります。 Returns the date difference. |
SQLServer
| 引数 | 日付要素 | SQL Server、Accessの日付の要素 |
| 開始日付 | 以下のいずれかの値で解決できる式 date datetime datetimeoffset datetime2 smalldatetime time | |
| 終了日付 | 開始日付と同様 | |
| 返値 | int | 開始日付と終了日付の差 |
DATEDIFF関数は指定された日付1,2の日付の差を日付要素の単位の数値で戻します。
MySQL
DATEDIFF() は、ある日付から別の日付までの日数の値として表現された expr1 − expr2 を返します。expr1 および expr2 は、日付または日付時間式です。 値の日付部分のみが計算に使用されます。
https://dev.mysql.com/doc/refman/8.0/ja/date-and-time-functions.html#function_datediff
SQL Server、Accessの日付の要素
SQL Server, Access Date Element
| SQL Server | 省略形 abbreviation | Access | |
|---|---|---|---|
| 年 | year | yy,yyyy | yyyy |
| 四半期 | quarter | qq,q | q |
| 月 | month | mm,m | m |
| 年始からの通算日 | dayofyear | dy,y | y |
| 日 | day | dd,d | d |
| 週 | week | wk,ww | ww |
| 曜日 | weekday | dw | w |
| 時間 | hour | hh | h |
| 分 | minute | mi,n | n |
| 秒 | second | ss,s | s |
| ミリ秒 | millisecond | ms |
実行例
MySQLの実行例
/* MySQL 2010/04/30と2009/02/01の差を日で求めるサンプル */
SELECT DATEDIFF('2010-04-30','2009-02-01'); 
SQLServerの実行例
/* SQL Server 2010/04/30と2009/02/01の差を日で求めるサンプル */
SELECT DATEDIFF(day,'2009-02-01','2010-04-30'); 
現在から指定の日までの日数を計算
/* SQL Server 現在から指定の日までの日数を求めるサンプル */
SELECT DATEDIFF(day,'2020/1/1',GETDATE())