MySQLでDATE()関数を使って年月日を比較し、一致するレコードを抽出する方法
MySQLでtimestamp型やdatetime型のカラムから「年・月・日」だけを比較してレコードを取得したい場合は、DATE()関数を使用すると簡単に実現できます。DATE()関数は、日時の値から時刻部分を取り除き、日付部分だけを返す関数です。
この記事では、実際にテーブルを作成し、特定の日付に一致するレコードを抽出する手順を解説します。
1. サンプルテーブルの作成
まず、timestamp型のカラムを持つテーブルを作成します。
mysql> create table DemoTable864(DueDateTime timestamp);
Query OK, 0 rows affected (0.56 sec)
2. レコードの挿入
INSERTコマンドを使って、いくつかのレコードを登録します。
mysql> insert into DemoTable864 values('2019-01-10 12:34:55');
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable864 values('2016-12-11 11:12:00');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable864 values('2015-04-01 10:00:00');
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable864 values('2017-05-20 04:40:10');
Query OK, 1 row affected (0.17 sec)3. 登録したレコードの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable864;
実行結果は以下の通りです。
+---------------------+
| DueDateTime |
+---------------------+
| 2019-01-10 12:34:55 |
| 2016-12-11 11:12:00 |
| 2015-04-01 10:00:00 |
| 2017-05-20 04:40:10 |
+---------------------+
4 rows in set (0.00 sec)
4. DATE()関数で年月日を比較する
ここが本題です。DATE()関数を使ってDueDateTimeカラムの日付部分と指定した日付を比較することで、時刻に関係なく「2015年4月1日」と一致するレコードを抽出できます。
mysql> select *from DemoTable864 where date(DueDateTime)='2015-04-01';
実行結果は以下の通りです。
+---------------------+
| DueDateTime |
+---------------------+
| 2015-04-01 10:00:00 |
+---------------------+
1 row in set (0.04 sec)
補足:LIKE演算子を使った方法
DATE()関数以外にも、LIKE演算子とワイルドカードを組み合わせる方法もあります。
mysql> select *from DemoTable864 where DueDateTime like '2015-04-01%';
ただし、この方法はインデックスが利用されにくい場合があるため、大量のデータを扱う場合はDATE()関数の使用か、範囲検索(BETWEENなど)を検討するとよいでしょう。
-
MySQLで特定の月と年に基づいてレコードを取得する方法
MySQLで特定の月と年に基づいてレコードを取得する方法日付データから特定の月と年に該当するレコードだけを抽出したい場合、MySQLの MONTH() 関数と YEAR() 関数を組み合わせて使用します。ここでは、実際にテーブルを作成し、データを挿入して、条件に合うレコードを取得するまでの手順を具体的に解説します。1. サンプルテーブルの作成まず、日付型(DATE)のカラムを持つテーブルを作成します。mysql> create table DemoTable1846 ( PurchaseDat
-
MySQLで今月のレコードを合計する方法【SUM()とMONTH()関数の使い方】
MySQLで今月のレコードを合計する方法MySQLで今月のレコードを合計するには、SUM()関数とMONTH()関数を組み合わせて使用します。ここでは、サンプルテーブルを作成し、実際にデータを集計する手順を順番に解説します。1. テーブルを作成するまず、日付と金額を格納するテーブルを作成しましょう。mysql> create table DemoTable1889 ( DueDate date, Amount int