この記事では、SQLで日付関数を用いたデータフィルタリングの方法を詳しく解説します。具体的なSQLコード例とその解説、さらには応用例も紹介していきます。この記事が、日付に依存するようなクエリを効率的に書くための参考になれば幸いです。
日付関数とは?
日付関数はSQLの内部関数の一つで、日付や時刻に関連するデータを操作する際に使用します。これにより、指定した日付範囲でデータをフィルタリングしたり、日付を加工して出力することが可能です。
主な日付関数
- NOW()
- CURDATE()
- DATE_ADD()
- DATE_SUB()
- YEAR()
- MONTH()
- DAY()
日付関数を使った基本的なフィルタリング
日付関数を使った基本的なフィルタリングには、主にWHERE句を用います。以下は、日付関数を用いて特定の日付範囲でフィルタリングする基本的なSQLクエリの例です。
SELECT * FROM orders
WHERE order_date >= CURDATE() - INTERVAL 7 DAY;
このSQLクエリの解説
この例では、現在の日付から過去7日間のデータを取得しています。CURDATE()関数は現在の日付を返し、INTERVAL 7 DAYで7日間を指定しています。
日付関数の応用例
日付関数を更に活用することで、より複雑な条件でデータをフィルタリングできます。
複数の日付関数を組み合わせる
複数の日付関数を組み合わせて、特定の曜日や月、季節に注文が多いか調べることができます。
SELECT * FROM orders
WHERE MONTH(order_date) = 12 AND DAYOFWEEK(order_date) = 2;
このSQLクエリの解説
この例では、12月の月曜日に注文があったデータをフィルタリングしています。MONTH()とDAYOFWEEK()関数を組み合わせています。
日付関数とJOINの組み合わせ
日付関数とJOINを組み合わせることで、関連テーブルにある日付データを用いた更に高度なフィルタリングが可能です。
SELECT orders.id, customers.name FROM orders
JOIN customers ON orders.customer_id = customers.id
WHERE YEAR(orders.order_date) = YEAR(CURDATE());
このSQLクエリの解説
このクエリでは、現在の年と同じ年に注文があった顧客名と注文IDを取得しています。YEAR()関数とCURDATE()関数を用いています。
関数名 | 説明 | 例 |
---|---|---|
NOW() | 現在の日時を返す | NOW() |
CURDATE() | 現在の日付を返す | CURDATE() |
YEAR() | 日付から年を取得 | YEAR(‘2023-10-18’) |
まとめ
SQLにおける日付関数は、非常に強力なツールです。日付に依存するクエリを効率的に書くために、多くの内部関数が提供されています。基本的なフィルタリングから、JOINを使った高度なデータ抽出まで、日付関数を使いこなすことで多くの情報を引き出すことができます。
コメント