本文へスキップ
BecomeCoder

SQL データ操作 (DML)コース · 第6章 式と関数で加工する · レッスン26

数値・日付関数 ― 丸める・年月を取り出す

ブラウザで完結

導入

「注文日から『月』だけ取り出して月別に見たい」「今日の日付が欲しい」「割り算の結果を丸めたい」。数値と日付は、加工したくなる場面が特に多いデータです。SQL関数でサッと処理しましょう。

説明

数値でよく使うのは round(丸め)、abs(絶対値)、%(剰余=割った余り)です。

SELECT round(128000 / 3.0, 2) AS 割った値, abs(-5) AS 絶対値, 17 % 5 AS 余り;

日付は、SQLite では YYYY-MM-DD 形式の文字列として扱い、専用の関数で加工します。中心になるのは strftime(書式, 日付) です。

書式取り出すもの例('2026-02-15'
%Y2026
%m02
%d15
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 月;

実際に動かしてみよう

下のエディタにクエリを書いて「実行」を押すと、ブラウザ内のSQLiteで結果が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう。

SQL — ブラウザ内で実行(SQLite)

ブラウザ内でSQLを動かす環境(SQLite)を読み込みます(初回のみ一瞬)。
スクロールして表示された時点でも自動で読み込まれます。