日付関数の使い方

日付を扱う

書き方

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 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。

SQL 構文一覧(使い方と例)へ戻る