日付関数の使い方
日付を扱う
書き方
CURRENT_DATE CURRENT_TIMESTAMP EXTRACT(YEAR FROM 日付) 日付 - 日付(日数) 日付 + 整数
EXTRACT で年・月・日を取り出します。PostgreSQL では date_trunc・to_char・interval も使えます。
よく使うオプション
| オプション | 意味 |
|---|---|
CURRENT_DATE | 今日の日付 |
CURRENT_TIMESTAMP | 今の日時 |
EXTRACT(YEAR FROM 日付) | 年・月(MONTH)・日(DAY)などを取り出す |
日付 - 日付 | 間の日数(PostgreSQL) |
日付 + 整数 | その日数だけ後の日付(PostgreSQL) |
date_trunc('month', 日時) | 月の初めなどに切りそろえる(PostgreSQL) |
例
SELECT name, CURRENT_DATE - hired_on AS days FROM employees;
入社してから今日までの日数を出します。
SELECT EXTRACT(YEAR FROM ordered_on) AS y, COUNT(*) FROM orders GROUP BY y ORDER BY y; y | count
------+-------
2023 | 310
2024 | 452
(2 rows)注文を年ごとに数えます。EXTRACT で日付から年だけを取り出しています。
SELECT * FROM orders WHERE ordered_on >= CURRENT_DATE - 7;
この 1 週間の注文を出します。
SELECT to_char(ordered_on, 'YYYY年MM月') FROM orders;
日付を「2024年06月」のような文字列にして出します(PostgreSQL と Oracle)。
よくある間違い・注意
- 日付の計算の書き方はデータベースごとに大きく違います。MySQL は DATEDIFF・DATE_ADD、Oracle は ADD_MONTHS などを使います。
- CURRENT_TIMESTAMP の時刻は、データベースの時間帯(タイムゾーン)の設定で変わります。
実際に打って練習する
SQL コースの Lv16「日付の関数」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
Lv1〜3 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。