導入
「注文日から『月』だけ取り出して月別に見たい」「今日の日付が欲しい」「割り算の結果を丸めたい」。数値と日付は、加工したくなる場面が特に多いデータです。SQL の関数でサッと処理しましょう。
説明
数値でよく使うのは round(丸め)、abs(絶対値)、%(剰余=割った余り)です。
SELECT round(128000 / 3.0, 2) AS 割った値, abs(-5) AS 絶対値, 17 % 5 AS 余り;
日付は、SQLite では YYYY-MM-DD 形式の文字列として扱い、専用の関数で加工します。中心になるのは strftime(書式, 日付) です。
| 書式 | 取り出すもの | 例('2026-02-15') |
|---|---|---|
%Y | 年 | 2026 |
%m | 月 | 02 |
%d | 日 | 15 |
SELECT id, ordered_at,
strftime('%Y', ordered_at) AS 年,
strftime('%m', ordered_at) AS 月
FROM orders;
date('now') で今日、date('now', '-7 days') で1週間前、というように相対的な日付も作れます。取り出した「年」「月」は文字列なので、GROUP BY strftime('%Y-%m', ordered_at) のように月別集計の軸にできます(集計は第2章で学んだ GROUP BY の応用です)。
やってみよう
初期表示のクエリを実行し、各注文の年・月が別々の列に取り出せることを確認しましょう。次に SELECT strftime('%Y-%m', ordered_at) AS 年月, COUNT(*) AS 件数 FROM orders GROUP BY 年月; を実行して、月別の注文件数が出ることを見てください。
演習
orders から、注文月(%m)ごとの注文件数を出してください。列は月 月 と件数 件数、GROUP BY で月ごとにまとめます。
ヒント1を見る
strftime('%m', ordered_at) で月を取り出し、それで GROUP BY します。
ヒント2を見る
SELECT strftime('%m', ordered_at) AS 月, COUNT(*) AS 件数 FROM orders GROUP BY 月;