はじめに

ほとんどのシステムでは、データの作成日時などの日付・日時を参照してSQLでデータを取得することは多いと思われます。今回はSQLで条件に日付を使って、判定やデータ取得をしていきます。(MySQLでのSQLとなります。)

以下のテーブルを例にして、説明します。

・testテーブル

idcreate_date
12025-04-14 10:00:00
22025-04-14 15:00:00
32025-04-15 10:00:00

完全一致の日付

testテーブルに対して、日付を条件にした、以下SQLを実行してみます。

SELECT * FROM test WHERE create_date = '2025-04-14 15:00:00';

条件の等号”=”を使用すると、完全一致での検索となるため、実行結果は次の通りとなります。

idcreate_date
22025-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';
idcreate_date
12025-04-14 10:00:00
22025-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件となりました。

idcreate_date
32025-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件ですので、実行結果は以下のようになります。

idcreate_date
22025-04-14 15:00:00
32025-04-15 10:00:00
実行結果

逆に、特定の期間以外のデータを取得する場合は、「列名 NOT BETWEEN a AND b」を使用します。

今回は以上となります。よいSQLライフを!