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

MySQLで現在の日付と翌日のレコードを条件に特定の列を抽出する方法

MySQLでは、CURDATE()関数を使うことで、現在の日付やその翌日に該当するレコードを簡単に抽出できます。この記事では、実際のサンプルを使いながら、現在の日付と翌日の出荷日を持つレコードから特定の列を選択して取得する方法を解説します。

1. 現在の日付を確認する

まず、curdate()関数で現在の日付を取得してみましょう。

mysql> select curdate();

実行すると、以下のような結果が表示されます。

+------------+
| curdate()  |
+------------+
| 2019-12-15 |
+------------+
1 row in set (0.00 sec)

2. サンプルテーブルを作成する

次に、商品情報と出荷日を管理するテーブルを作成します。

mysql> create table DemoTable1956
    (
    ProductId int,
    ProductName varchar(20),
    CustomerName varchar(20),
    ShippingDate date
    );
Query OK, 0 rows affected (0.00 sec)

3. レコードを挿入する

insertコマンドを使って、いくつかのレコードを登録します。

mysql> insert into DemoTable1956 values(101,'Product-1','Sam','2019-10-11');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1956 values(102,'Product-2','Carol','2018-12-01');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1956 values(103,'Product-3','David','2019-12-15');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1956 values(104,'Product-4','Robert','2019-12-16');
Query OK, 1 row affected (0.00 sec)

4. 登録したレコードを確認する

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

mysql> select * from DemoTable1956;

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

+-----------+-------------+--------------+--------------+
| ProductId | ProductName | CustomerName | ShippingDate |
+-----------+-------------+--------------+--------------+
|       101 | Product-1   | Sam          | 2019-10-11   |
|       102 | Product-2   | Carol        | 2018-12-01   |
|       103 | Product-3   | David        | 2019-12-15   |
|       104 | Product-4   | Robert       | 2019-12-16   |
+-----------+-------------+--------------+--------------+
4 rows in set (0.00 sec)

5. 現在の日付と翌日のレコードから列を抽出する

ここが本題です。WHERE句の中でIN演算子を使用し、CURDATE()(今日)とCURDATE()+interval 1 Day(明日)のいずれかに一致する出荷日を持つレコードから、顧客名(CustomerName)だけを抽出します。

mysql> select CustomerName from DemoTable1956 where ShippingDate IN(CURDATE(),CURDATE()+interval 1 Day);

実行すると、以下のような結果が得られます。

+--------------+
| CustomerName |
+--------------+
| David        |
| Robert       |
+--------------+
2 rows in set (0.00 sec)

ポイント解説

  • CURDATE():現在の日付を「YYYY-MM-DD」形式で返す関数です。
  • CURDATE() + interval 1 Day:現在の日付に1日を加算し、翌日の日付を求めます。
  • IN 演算子:複数の候補値のいずれかに一致するかどうかを判定できます。今回のように「今日または明日」という条件を簡潔に書くのに便利です。

この手法は、出荷予定管理や予約システムなど、「本日〜翌日」のデータを扱いたい場面で非常に役立ちます。なお、日付範囲が広くなる場合はBETWEEN句を使うと、さらに柔軟な条件指定が可能です。

  1. MySQLでSELECT *を使って現在の日付のレコードを検索する方法

    現在の日付を取得するには CURDATE() 関数を使用します。さらに、STR_TO_DATE() 関数で文字列を日付型に変換し、現在の日付と比較することで、該当するレコードを抽出できます。以下に基本的な構文を示します。基本構文select *from テーブル名 where str_to_date(カラム名,書式指定子)=curdate();それでは、現在の日付が「27/10/2019」である場合を例に、具体的な手順を見ていきましょう。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable -> (

  2. MySQLのWHERE句で期日と現在日付のレコードをチェックする条件の書き方

    期日(duedate)と現在の日付を比較してレコードの妥当性をチェックしたい場合、MySQLでは IF() 関数 を使うと便利です。NULL値や過去の日付が含まれるデータを自動的に判定し、「Wrong Date」などのラベルを表示させることができます。まずは、動作を確認するためのテーブルを作成しましょう。テーブル作成例mysql> create table demo89 -> ( -> duedate date -> ); Query OK, 0 rows affected (0.78 sec)次に、INSERTコマンドを使ってテーブルにいくつか