MySQLで現在の日付より古い行を選択する方法
MySQLでは、NOW()関数を使うことで、現在の日時より古い(過去の日付の)行を簡単に抽出できます。この記事では、具体的なサンプルを通じてその方法を解説します。
前提となる例
現在の日付が「2019-08-03」であると仮定します。まずは、締め切り日を管理するテーブルを作成してみましょう。
mysql> create table DemoTable840(DueDate datetime); Query OK, 0 rows affected (0.66 sec)
テストデータの挿入
INSERTコマンドを使って、いくつかのレコードをテーブルに追加します。
mysql> insert into DemoTable840 values('2019-08-9');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable840 values('2019-07-5');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable840 values('2019-08-10');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable840 values('2019-07-13');
Query OK, 1 row affected (0.10 sec)登録データの確認
SELECT文ですべてのレコードを表示して確認します。
mysql> select *from DemoTable840;
実行結果は以下のとおりです。
+---------------------+ | DueDate | +---------------------+ | 2019-08-09 00:00:00 | | 2019-07-05 00:00:00 | | 2019-08-10 00:00:00 | | 2019-07-13 00:00:00 | +---------------------+ 4 rows in set (0.00 sec)
現在の日付より古い行を取得するクエリ
過去の日付を持つ行だけを取り出すには、WHERE句でDueDate < NOW()という条件を指定します。NOW()は現在の日時を返すため、それより前のレコードのみが該当します。
mysql> select *from DemoTable840 where DueDate < NOW();
実行すると、次のような出力が得られます。
+---------------------+ | DueDate | +---------------------+ | 2019-07-05 00:00:00 | | 2019-07-13 00:00:00 | +---------------------+ 2 rows in set (0.00 sec)
補足:NOW()以外の選択肢
用途に応じて、以下の関数も活用できます。
- CURDATE():現在の日付のみを返します。時刻を無視して日付単位で比較したい場合に便利です。
- CURRENT_TIMESTAMP():NOW()と同様に現在の日時を返します。
たとえば「今日の0時以前」を条件にしたい場合は、DueDate < CURDATE()のように記述します。期限切れのタスクや有効期限が切れたレコードを抽出する際など、実務でも頻繁に使われるテクニックなので、ぜひ覚えておきましょう。
-
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
-
MySQLで1日より古いタイムスタンプの行を取得する方法
MySQLで1日より古いタイムスタンプの行を取得する方法MySQLで、1日より古いタイムスタンプで更新された行を取得したい場合は、from_unixtime()関数とnow()関数を組み合わせて使用します。from_unixtime()はUNIXタイムスタンプを日時形式に変換する関数で、now()は現在の日時を返します。これらを組み合わせることで、指定した期間より古いレコードを簡単に抽出できます。それでは、実際にテーブルを作成して動作を確認していきましょう。テーブルの作成まず、サンプルデータを格納するテーブルを作成します。mysql> create table demo75 -&g