Excel関数と同様にSQLにも文字列・算術関数以外に日付関数が存在します。
DATEDIFF関数
今回は日付関数の中からDATEDIFF関数を紹介します。
DATEDIFF関数の構文は以下のとおりです。
select DATEDIFF(interval,date1,date2,firstdayofweek,firstweekofyear) from テーブル名
DATEDIFF関数は引数「date1」と引数「date2」の間隔を引数「interval」で指定した単位で抽出します。
引数 | 内容 |
---|---|
interval | 抽出形式。日付・時刻形式データから抽出するデータを指定 |
date1 | 日付・時刻データを含む列・定数・式を指定する |
date2 | 日付・時刻データを含む列・定数・式を指定する |
firstdayofweek | 省略可。週の始まりの曜日。1~7の数値を指定します。省略した場合は1を指定したことになります。 |
firstweekofyear | 省略可。第1週の指定。 |
Excel 関数のDATEDIF関数とほぼ同じ機能です。
interval
設定 | 説明 |
---|---|
yyyy | 年 |
q | 四半期 |
m | 月 |
y | 年間経過日数 |
d | 日 |
w | 曜日 |
ww | 週 |
h | 時 |
n | 分 |
s | 秒 |
firstdayofweek
定数 | 値 | 意味 |
---|---|---|
vbSunday | 1 | 日曜日(既定値) |
vbMonday | 2 | 月曜日 |
vbTuesday | 3 | 火曜日 |
vbWednesday | 4 | 水曜日 |
VbThursday | 5 | 木曜日 |
vbFriday | 6 | 金曜日 |
vbSaturday | 7 | 土曜日 |
定数が存在しますが、Excel内では使えないようなので「値」を使用します。
firstweekofyear
定数 | 値 | 説明 |
---|---|---|
vbUseSystem | 0 | NLS API の設定を使います。 |
vbFirstJan1 | 1 | 1 月 1 日が含まれる週から開始します (既定)。 |
vbFirstFourDays | 2 | 新年の少なくとも 4 日が含まれる最初の週から開始します。 |
vbFirstFullWeek | 3 | 年の最初の完全な週から開始します。 |
DATEDIFF関数使用例
引数「date1」と引数「date2」の間隔を引数「interval」の単位で表示。
下記では元データ「誕生日」と今日(2023-05-21)の間隔を「日」単位で表示。
「年」単位でも表示できるが、1年が経過していなくても1と表示されるので注意。