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

【MySQL】CURDATE()を使って日付リストから今日の日付のレコードを取得する方法

はじめに

MySQLで日付型のカラムの中から「今日の日付」に一致するレコードを取得したい場合、CURDATE() 関数を使うのが便利です。この記事では、サンプルテーブルを作成してデータを挿入し、当日の日付に一致するレコードを抽出する手順を、実行結果つきでわかりやすく解説します。

テーブルの作成

まず、DATE型のカラムを持つテーブルを作成しましょう。

mysql> create table DemoTable
    -> (
    -> DueDate date
    -> );
Query OK, 0 rows affected (1.35 sec)

レコードの挿入

続いて、INSERT文を使って複数のレコードを追加します。

mysql> insert into DemoTable values('2019-06-14');
Query OK, 1 row affected (0.35 sec)

mysql> insert into DemoTable values('2019-06-15');
Query OK, 1 row affected (0.64 sec)

mysql> insert into DemoTable values('2019-06-16');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values('2018-01-16');
Query OK, 1 row affected (0.29 sec)

mysql> insert into DemoTable values('2018-07-16');
Query OK, 1 row affected (0.53 sec)

登録済みデータの確認

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

mysql> select *from DemoTable;

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

+------------+
| DueDate    |
+------------+
| 2019-06-14 |
| 2019-06-15 |
| 2019-06-16 |
| 2018-01-16 |
| 2018-07-16 |
+------------+
5 rows in set (0.00 sec)

当日の日付に一致するレコードを取得するクエリ

ここが本題です。CURDATE() は現在の日付(例:2019-06-16)を返す関数です。カラムの値を DATE() 関数で日付型に変換して CURDATE() と比較することで、当日のレコードだけを抽出できます。

mysql> select *from DemoTable where DATE(DueDate)=CURDATE();

実行結果:

+------------+
| DueDate    |
+------------+
| 2019-06-16 |
+------------+
1 row in set (0.03 sec)

このように、5件のうち当日の日付である「2019-06-16」のレコードのみが取得できました。

補足:CURDATE()とNOW()の違い

CURDATE() が「日付のみ」を返すのに対し、NOW() は「日付+時刻」を返します。DATETIME型のカラムを扱う場合も、上記のように DATE(カラム名)=CURDATE() の形式で比較すれば、時刻部分を無視して日付だけでマッチングできます。また、カラムが純粋なDATE型であれば、WHERE DueDate = CURDATE() のように直接比較しても問題ありません。

  1. MySQLで当日の00:00から現在時刻までのレコードを抽出するクエリの書き方

    はじめにMySQLで「今日の日付の午前0時(00:00)から現在時刻まで」のレコードを取得したいケースはよくあります。例えば、現在の日時が 2019-09-14 08:50:10 である場合、2019-09-14 00:00:00 から 2019-09-14 08:50:10 までの範囲にあるレコードを抽出することになります。本記事では、実際にテーブルを作成し、データを挿入しながら、この条件を実現するクエリを具体的に解説します。サンプルテーブルの作成まず、DATETIME型のカラムを持つテーブルを作成します。mysql> create table DemoTable( &nbs

  2. MySQLでvarchar型の日付レコードを現在の日付と比較する方法

    MySQLでは、varchar型として保存された日付を現在の日付と比較する場合、STR_TO_DATE()関数を活用するのが効果的です。文字列形式の日付をそのまま比較すると、期待通りの結果が得られないことがあるため、まず適切な日付型に変換してから比較を行いましょう。基本構文varchar型の日付カラムと現在の日付を比較する際の基本的な構文は以下の通りです。select * from yourTableName where str_to_date(yourColumnName,yourFormatSpecifier) > curdate();サンプルテーブルの作成まず、varchar型の日