Excel関数と同様にSQLにも文字列・算術関数以外に日付関数が存在します。
DATEPART関数
今回は日付関数の中からDATEPART関数を紹介します。
DATEPART関数の構文は以下のとおりです。
select DATEPART(interval,date,firstdayofweek,firstweekofyear) from テーブル名
DATEPART関数は引数「date」から引数「interval」で指定した単位で日付・時刻情報を抽出します。
| 引数 | 内容 |
|---|---|
| interval | 抽出形式。日付・時刻形式データから抽出するデータを指定 |
| date | 日付・時刻データを含む列・定数・式を指定する |
| firstdayofweek | 省略可。週の始まりの曜日。1~7の数値を指定します。省略した場合は1を指定したことになります。 |
| firstweekofyear | 省略可。第1週の指定。 |
Excel VBA関数のDATEPART関数と同じ機能です。
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 | 年の最初の完全な週から開始します。 |
DATEPART関数使用例
日付・時刻情報データから指定した単位で日付・時刻情報を抽出。
下記では誕生日から年を抽出。

引数「interval」の指定によって様々情報を抽出できる。
引数「interval」に「y」を指定すると、引数「date」に指定した日付が「date」に指定した年の1/1から何日経過したかを抽出できる。

引数「date」にはシリアル値を指定することも可能。
