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

MySQLで現在の日時より前のタイムスタンプを抽出する方法

MySQLでは、NOW()関数と比較演算子を組み合わせることで、現在の日時より前のタイムスタンプを持つレコードを簡単に抽出できます。この記事では、テーブルの作成からデータの挿入、そして条件付きのSELECT文による抽出まで、具体的な手順を解説します。

1. テーブルを作成する

まず、TIMESTAMP型のカラムを持つテーブルを作成します。

mysql> create table DemoTable(
    ArrivalDate timestamp
);
Query OK, 0 rows affected (1.96 sec)

ここでは「ArrivalDate」という名前のTIMESTAMP型カラムを1つだけ持つシンプルなテーブル「DemoTable」を作成しました。

2. テーブルにレコードを挿入する

次に、INSERTコマンドを使用してテーブルに複数のレコードを追加します。

mysql> insert into DemoTable values('2019-09-14 17:25:00');
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable values('2019-09-13 17:25:00');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('2016-09-01 17:20:10');
Query OK, 1 row affected (0.38 sec)
mysql> insert into DemoTable values('2019-09-11 12:00:00');
Query OK, 1 row affected (0.16 sec)

3. 登録された全レコードを確認する

SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

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

+---------------------+
| ArrivalDate |
+---------------------+
| 2019-09-14 17:25:00 |
| 2019-09-13 17:25:00 |
| 2016-09-01 17:20:10 |
| 2019-09-11 12:00:00 |
+---------------------+
4 rows in set (0.04 sec)

合計4件のレコードが登録されていることが確認できます。

4. 現在の日時より前のタイムスタンプを抽出する

本題となる、現在の日時より前のタイムスタンプを持つレコードを表示するクエリは以下の通りです。

mysql> select *from DemoTable where ArrivalDate < now();

実行すると、次のような結果が得られます。

+---------------------+
| ArrivalDate |
+---------------------+
| 2019-09-13 17:25:00 |
| 2016-09-01 17:20:10 |
| 2019-09-11 12:00:00 |
+---------------------+
3 rows in set (0.07 sec)

解説

ポイントはWHERE句でArrivalDate < now()という条件を指定している点です。NOW()はMySQLの組み込み関数で、クエリ実行時点の現在日時を返します。この比較により、現在日時よりも過去のタイムスタンプを持つレコードのみが抽出されます。

上記の例では、最も新しい「2019-09-14 17:25:00」が現在日時より後のため除外され、残りの3件が表示されています。

応用テクニック

用途に応じて、以下のようなバリエーションも活用できます。

  • 現在以降のデータを抽出したい場合: where ArrivalDate > now()
  • 特定の日時と比較したい場合: where ArrivalDate < '2019-09-13 00:00:00'
  • 今日の0時以前を抽出したい場合: where ArrivalDate < curdate()

このように、NOW()CURDATE()などの日付関数と比較演算子を組み合わせることで、柔軟な日時条件でのデータ抽出が可能になります。ログの整理や期限切れデータの管理など、実務でも頻繁に使われるテクニックなので、ぜひ覚えておきましょう。

  1. MySQLのDATE_FORMAT関数でタイムスタンプから月番号を取得する方法

    MySQLでタイムスタンプ型のカラムから「月の番号だけ」を取り出したい場合、DATE_FORMAT() 関数を使うのが便利です。書式指定子 %m を指定することで、01〜12の形式で月番号を文字列として取得できます。この記事では、実際にテーブルを作成し、データを登録して、月番号を抽出するまでの一連の手順をサンプルコード付きで解説します。1. サンプルテーブルの作成まず、TIMESTAMP型のカラムを持つテーブルを作成します。mysql> create table DemoTable1999 ( ArrivalDate timestamp ); Query OK,

  2. 【MySQL】DATE_FORMAT()でタイムスタンプから月名のみを取得する方法

    MySQLでTIMESTAMPから月名のみを取得する方法 MySQLで日時データ(TIMESTAMP)から「月名」だけを取り出したい場合は、DATE_FORMAT()関数を使用します。フォーマット指定子に%Mを指定することで、「January」「December」のような完全な英語の月名を簡単に取得できます。 1. サンプルテーブルを作成する まず、TIMESTAMP型のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1999 ( ArrivalDate timestamp ); Query OK, 0 rows affected