MySQLで現在の日付(CURDATE)を使ってクエリ結果をフィルタリングする方法
MySQLでは、DATE() 関数と CURDATE() 関数を組み合わせることで、DATETIME型のカラムを現在の日付で絞り込むことができます。さらに TIME() 関数を使えば、特定の時間帯だけを抽出することも可能です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、現在の日付でレコードをフィルタリングする方法を解説します。
1. サンプルテーブルの作成
まず、DATETIME型のカラムを持つテーブルを作成します。
mysql> create table DemoTable(DueDate datetime); Query OK, 0 rows affected (0.94 sec)
2. レコードの挿入
次に、INSERT文を使って複数のレコードを登録します。
mysql> insert into DemoTable values('2019-07-10 04:20:00');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('2019-07-10 05:10:40');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('2019-07-10 09:00:20');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('2019-07-10 10:01:04');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('2019-07-10 12:11:10');
Query OK, 1 row affected (0.19 sec)3. 登録したレコードの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行すると、次のような出力が得られます。
+---------------------+ | DueDate | +---------------------+ | 2019-07-10 04:20:00 | | 2019-07-10 05:10:40 | | 2019-07-10 09:00:20 | | 2019-07-10 10:01:04 | | 2019-07-10 12:11:10 | +---------------------+ 5 rows in set (0.00 sec)
4. 現在の日付でフィルタリングするクエリ
ここが本題です。次のクエリでは、「日付が今日である」かつ「時刻が04:00:00より大きく10:00:00未満」という条件でレコードを絞り込んでいます。
mysql> select *from DemoTable where date(DueDate)=curdate()
and time(DueDate) > '04:00:00'
and time(DueDate) < '10:00:00';実行結果は以下のとおりです。
+---------------------+ | DueDate | +---------------------+ | 2019-07-10 04:20:00 | | 2019-07-10 05:10:40 | | 2019-07-10 09:00:20 | +---------------------+ 3 rows in set (0.00 sec)
使用した関数のポイント
- date():DATETIME型の値から日付部分のみを取り出します。
- curdate():現在の日付を「YYYY-MM-DD」形式で返します。
- time():DATETIME型の値から時刻部分のみを取り出し、時間帯による絞り込みを可能にします。
このように、日付と時刻をそれぞれ別の関数で取り出して比較することで、「今日の〇時から〇時まで」といった柔軟な条件指定が簡単に行えます。ログデータや予約データなど、日時で管理されるレコードを扱う際にぜひ活用してください。
-
MySQLで日付付きの行を挿入する方法:DATE型カラムへのデータ登録手順
MySQLで日付付きの行を挿入するには MySQLでは、DATE型のカラムに対して「YYYY-MM-DD」形式の日付文字列を指定することで、簡単に日付付きの行を挿入できます。ここでは、従業員情報を管理するテーブルを例に、テーブル作成からデータ挿入、確認までの一連の手順を解説します。 1. テーブルを作成する まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。EmployeeIdは自動採番(AUTO_INCREMENT)の主キーとし、入社日を格納するJoiningDateカラムにはDATE型を指定します。 mysql> create table DemoTable
-
MySQLで現在の日付に11日を追加する方法【DATE_ADD関数の使い方】
はじめにMySQLでは、DATE_ADD()関数を使うことで、日付に指定した日数を簡単に加算できます。本記事では、現在の日付(CURDATE())に11日を追加する方法を、テーブル作成からクエリ実行まで具体的な例を交えて解説します。サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable1994 ( ArrivalDate date ); Query OK, 0 rows affected (5.33 sec)テストデータの挿入続いて、INSERTコマンドを使用してテーブルに複数のレコードを挿入します。mysql&g