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句を使うと、さらに柔軟な条件指定が可能です。
-
MySQLでSELECT *を使って現在の日付のレコードを検索する方法
現在の日付を取得するには CURDATE() 関数を使用します。さらに、STR_TO_DATE() 関数で文字列を日付型に変換し、現在の日付と比較することで、該当するレコードを抽出できます。以下に基本的な構文を示します。基本構文select *from テーブル名 where str_to_date(カラム名,書式指定子)=curdate();それでは、現在の日付が「27/10/2019」である場合を例に、具体的な手順を見ていきましょう。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable -> (
-
MySQLのWHERE句で期日と現在日付のレコードをチェックする条件の書き方
期日(duedate)と現在の日付を比較してレコードの妥当性をチェックしたい場合、MySQLでは IF() 関数 を使うと便利です。NULL値や過去の日付が含まれるデータを自動的に判定し、「Wrong Date」などのラベルを表示させることができます。まずは、動作を確認するためのテーブルを作成しましょう。テーブル作成例mysql> create table demo89 -> ( -> duedate date -> ); Query OK, 0 rows affected (0.78 sec)次に、INSERTコマンドを使ってテーブルにいくつか