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

MySQLで現在の日付より前の日付データを抽出する方法

MySQLでは、NOW() 関数と比較演算子を使うことで、現在の日時より前の日付を持つレコードを簡単に抽出できます。この記事では、実際にテーブルを作成し、サンプルデータを登録したうえで、現在日時より過去の日付レコードを取得する手順を解説します。

1. サンプルテーブルの作成

まず、日付型(DATETIME)のカラムを持つテーブルを作成しましょう。

mysql> create table DemoTable1877
   (
   DueDate datetime
   );
Query OK, 0 rows affected (0.00 sec)

2. テストデータの挿入

次に、INSERT文を使って複数のレコードを登録します。

mysql> insert into DemoTable1877 values('2019-12-10');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1877 values('2019-12-05');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1877 values('2019-12-07');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1877 values('2019-12-09');
Query OK, 1 row affected (0.00 sec)

3. 登録されたレコードの確認

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

mysql> select * from DemoTable1877;

実行すると、以下のような結果が出力されます。

+---------------------+
| DueDate             |
+---------------------+
| 2019-12-10 00:00:00 |
| 2019-12-05 00:00:00 |
| 2019-12-07 00:00:00 |
| 2019-12-09 00:00:00 |
+---------------------+
4 rows in set (0.00 sec)

4. 現在の日付を確認する

CURDATE() 関数を使うと、現在の日付を確認できます。ここでは例として「2019-12-08」が返されているものとします。

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2019-12-08 |
+------------+
1 row in set (0.00 sec)

5. 現在の日付より前のレコードを抽出するクエリ

現在の日時より前の日付を持つレコードだけを取得するには、WHERE句で NOW() 関数と比較します。

mysql> select * from DemoTable1877 where DueDate < now();

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

+---------------------+
| DueDate             |
+---------------------+
| 2019-12-05 00:00:00 |
| 2019-12-07 00:00:00 |
+---------------------+
2 rows in set (0.00 sec)

ポイント解説

NOW() 関数は現在の「日付+時刻」を返すため、DATETIME型カラムとの比較に適しています。なお、時刻を考慮せず日付だけで比較したい場合は CURDATE() を使うことも可能です。

mysql> select * from DemoTable1877 where DueDate < curdate();

このように、比較演算子「<」と日時関数を組み合わせることで、期限切れのタスクや有効期限が過ぎたデータなど、過去の日付レコードを柔軟に抽出できます。

  1. MySQLのフィールドに現在の日付を設定する方法(UNIX_TIMESTAMP(now)の使い方)

    MySQLでは、unix_timestamp()関数を使うことで、現在の日時をUNIXタイムスタンプとして取得し、テーブルのフィールドに簡単に設定できます。この記事では、実際にテーブルを作成し、現在の日付(UNIXタイムスタンプ)をフィールドに設定する手順を解説します。UNIXタイムスタンプとはUNIXタイムスタンプとは、1970年1月1日00:00:00 UTCからの経過秒数を表す数値です。日時を整数として扱えるため、比較や計算が容易になり、データベースでの時間管理によく利用されます。サンプルテーブルの作成まず、以下のようにCREATE TABLE文でテーブルを作成します。mysql>

  2. MySQLでテーブルの日付レコードを変更する方法|UPDATEとDATE_ADD()の使い方

    MySQLで保存済みの日付データに年数を加算して変更したい場合、UPDATEコマンドとDATE_ADD()関数を組み合わせることで簡単に実現できます。ここでは、実際のSQLクエリ例を使いながら、日付レコードを変更する手順を順番に解説します。1. テーブルを作成するまず、日付型(date)のカラムを持つテーブルを作成します。mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERTコマンドを使ってテ