MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで日付型カラムから今日と明日のレコードを抽出して表示する方法

MySQLでは、日付型(DATE)のカラムに対して「今日」と「明日」の日付に該当するレコードだけを簡単に抽出できます。本記事では、サンプルテーブルを作成し、CURDATE() 関数と INTERVAL を組み合わせたクエリを使って、今日および明日の日付データを表示する手順を解説します。

1. サンプルテーブルの作成

まず、日付を格納するテーブルを作成します。

mysql> create table DemoTable
(
    AdmissionDate date
);
Query OK, 0 rows affected (0.87 sec)

AdmissionDate という DATE 型のカラムを1つだけ持つシンプルなテーブルを用意しました。

2. テストデータの挿入

次に、INSERT 文を使っていくつかのレコードを登録します。

mysql> insert into DemoTable values('2019-08-24');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('2019-08-25');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('2019-08-20');
Query OK, 1 row affected (0.24 sec)

3. 登録されたレコードの確認

SELECT 文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果は以下の通りです。

+---------------+
| AdmissionDate |
+---------------+
| 2019-08-24    |
| 2019-08-25    |
| 2019-08-20    |
+---------------+
3 rows in set (0.00 sec)

3件のレコードが正しく登録されていることが確認できました。ここで、「2019-08-24」を今日、「2019-08-25」を明日の日付と仮定します。

4. 今日と明日のレコードを抽出するクエリ

今日と明日の日付に一致するレコードのみを表示するには、以下のようなクエリを実行します。

mysql> select *from DemoTable where AdmissionDate IN(curdate(),curdate() + interval 1 day);

実行結果:

+---------------+
| AdmissionDate |
+---------------+
| 2019-08-24    |
| 2019-08-25    |
+---------------+
2 rows in set (0.00 sec)

今日(CURDATE())と明日(CURDATE() + 1日)に該当する2件のレコードだけが取得できました。

クエリのポイント解説

  • CURDATE():現在の日付(今日)を「YYYY-MM-DD」形式で返す関数です。時刻は含まれません。
  • curdate() + interval 1 day:今日の日付に1日を加算し、明日の日付を求めています。「interval 1 day」の部分の数値や単位(week、month など)を変えれば、さまざまな期間に応用できます。
  • IN 演算子:複数の候補値のいずれかに一致するレコードをまとめて抽出できます。OR 条件を並べるよりも簡潔に記述できるのが利点です。

代替方法:BETWEEN を使った書き方

同様の結果は BETWEEN を使っても得られます。

mysql> select *from DemoTable
where AdmissionDate BETWEEN curdate() AND curdate() + interval 1 day;

どちらの書き方でも結果は同じですが、対象日が2つだけなら IN、連続した期間を扱うなら BETWEEN の使用が読みやすくおすすめです。

このように、MySQLでは CURDATE() と INTERVAL を組み合わせることで、システム日付を基準とした柔軟な日付検索が実現できます。予約管理やイベント告知など、当日・翌日のデータを扱う場面でぜひ活用してください。

  1. MySQLでNULLを含む列からNULL以外(NOT NULL)の値だけを抽出して表示する方法

    MySQLのIS NOT NULLを使ってNULL以外の値のみを表示するMySQLで、NULLとNULL以外のレコードが混在する列からNULL以外の値だけを取得したい場合は、IS NOT NULL演算子を使用します。この記事では、実際にテーブルを作成しながら手順を解説します。1. テーブルの作成まず、日付型の列を持つサンプルテーブルを作成します。mysql> create table DemoTable1      (      DueDate date      ); Query OK, 0 ro

  2. MySQLで文字列や数値が混在するカラムから特定のレコードを取得する方法

    文字列・数値・特殊文字が混在するカラムから特定のレコードを取得したい場合は、ORDER BY CAST() を活用すると便利です。この記事では、SUBSTRING() 関数と組み合わせて、「指定した文字列で始まるレコードの中から、数値部分が最も大きいもの」を抽出する方法を、実際のSQL例とともにわかりやすく解説します。 サンプルテーブルの作成 まず、CREATE TABLE文でテーブルを作成します。 mysql> create table DemoTable2006 ( UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Us