Table of Contents
はじめに
ほとんどのシステムでは、データの作成日時などの日付・日時を参照してSQLでデータを取得することは多いと思われます。今回はSQLで条件に日付を使って、判定やデータ取得をしていきます。(MySQLでのSQLとなります。)
以下のテーブルを例にして、説明します。
・testテーブル
id | create_date |
1 | 2025-04-14 10:00:00 |
2 | 2025-04-14 15:00:00 |
3 | 2025-04-15 10:00:00 |
完全一致の日付
testテーブルに対して、日付を条件にした、以下SQLを実行してみます。
SELECT * FROM test WHERE create_date = '2025-04-14 15:00:00';
条件の等号”=”を使用すると、完全一致での検索となるため、実行結果は次の通りとなります。
id | create_date |
2 | 2025-04-14 15:00:00 |
また、以下のように日付のみを指定した場合だと、完全一致とならないため、実行結果は0件となります。
SELECT * FROM test WHERE create_date = '2025-04-14';
〇〇以前の日付
ここでは、特定の日付より前のデータのみを取得してみます。たとえば、「2025-04-14 15:00:00」より前(条件となる日時を含む)のデータを取得する場合、不等号”<=”を使用します。それが以下のSQLと、その実行結果となります。
SELECT * FROM test WHERE create_date <= '2025-04-14 15:00:00';
id | create_date |
1 | 2025-04-14 10:00:00 |
2 | 2025-04-14 15:00:00 |
〇〇以降の日付
さきほどとは逆に、「2025-04-14 15:00:00」より以降(条件となる日時を含まない)のデータを取得したいとします。次は、不等号”>”を使用してSQLを作成します。
SELECT * FROM test WHERE create_date > '2025-04-14 15:00:00';
実行結果は以下となります。条件となる日時を含まないため、取得件数は1件となりました。
id | create_date |
3 | 2025-04-15 10:00:00 |
2つの日付の期間
特定の2つの日付の期間内のデータ取得には、「列名 BETWEEN a AND b」を使用します。
SELECT * FROM test WHERE create_date BETWEEN '2025-04-14 12:00:00' AND '2025-04-15 12:00:00';
testテーブルで、「2025-04-14 12:00:00」から「2025-04-15 12:00:00」のデータは2件ですので、実行結果は以下のようになります。
id | create_date |
2 | 2025-04-14 15:00:00 |
3 | 2025-04-15 10:00:00 |
逆に、特定の期間以外のデータを取得する場合は、「列名 NOT BETWEEN a AND b」を使用します。
今回は以上となります。よいSQLライフを!