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

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など)を検討するとよいでしょう。

  1. MySQLで特定の月と年に基づいてレコードを取得する方法

    MySQLで特定の月と年に基づいてレコードを取得する方法日付データから特定の月と年に該当するレコードだけを抽出したい場合、MySQLの MONTH() 関数と YEAR() 関数を組み合わせて使用します。ここでは、実際にテーブルを作成し、データを挿入して、条件に合うレコードを取得するまでの手順を具体的に解説します。1. サンプルテーブルの作成まず、日付型(DATE)のカラムを持つテーブルを作成します。mysql> create table DemoTable1846     (     PurchaseDat

  2. MySQLで今月のレコードを合計する方法【SUM()とMONTH()関数の使い方】

    MySQLで今月のレコードを合計する方法MySQLで今月のレコードを合計するには、SUM()関数とMONTH()関数を組み合わせて使用します。ここでは、サンプルテーブルを作成し、実際にデータを集計する手順を順番に解説します。1. テーブルを作成するまず、日付と金額を格納するテーブルを作成しましょう。mysql> create table DemoTable1889    (    DueDate date,    Amount int