MySQLで1日より古いタイムスタンプの行を取得する方法
MySQLで1日より古いタイムスタンプの行を取得する方法
MySQLで、1日より古いタイムスタンプで更新された行を取得したい場合は、from_unixtime()関数とnow()関数を組み合わせて使用します。
from_unixtime()はUNIXタイムスタンプを日時形式に変換する関数で、now()は現在の日時を返します。これらを組み合わせることで、指定した期間より古いレコードを簡単に抽出できます。
それでは、実際にテーブルを作成して動作を確認していきましょう。
テーブルの作成
まず、サンプルデータを格納するテーブルを作成します。
mysql> create table demo75
-> (
-> due_date int(11)
-> );
Query OK, 0 rows affected, 1 warning (2.87 sec)
レコードの挿入
次に、insertコマンドを使って、unix_timestamp()で変換したUNIXタイムスタンプ形式のレコードを挿入します。
mysql> insert into demo75 values(unix_timestamp("2020-01-10"));
Query OK, 1 row affected (0.46 sec)
mysql> insert into demo75 values(unix_timestamp("2020-11-19"));
Query OK, 1 row affected (0.59 sec)
mysql> insert into demo75 values(unix_timestamp("2020-12-18"));
Query OK, 1 row affected (0.44 sec)
mysql> insert into demo75 values(unix_timestamp("2020-11-10"));
Query OK, 1 row affected (0.70 sec)レコードの確認
select文でテーブル内のレコードを表示します。
mysql> select *from demo75;
上記のクエリを実行すると、次のような出力が得られます。
+------------+
| due_date |
+------------+
| 1578594600 |
| 1605724200 |
| 1608229800 |
| 1604946600 |
+------------+
4 rows in set (0.00 sec)
1日より古いタイムスタンプの行を取得するクエリ
以下が、MySQLで1日より古いタイムスタンプの行を取得するためのクエリです。
mysql> select * from demo75
-> where from_unixtime(due_date) < now() - interval 1 day;
このクエリでは、from_unixtime(due_date)でUNIXタイムスタンプを日時に変換し、now() - interval 1 day(現在日時から1日前)と比較することで、1日より古いレコードのみを抽出しています。
実行結果は次のとおりです。
+------------+
| due_date |
+------------+
| 1578594600 |
| 1604946600 |
+------------+
2 rows in set (0.00 sec)
まとめ
このように、from_unixtime()とnow()、そしてintervalを組み合わせることで、UNIXタイムスタンプ形式で保存された日付データから、特定の期間より古いレコードを簡単に取得できます。DATE型やDATETIME型ではなくint型でタイムスタンプを保存している場合に特に便利なテクニックなので、ぜひ活用してみてください。
-
MySQLでIDを指定してテーブルから複数行を削除する方法(IN句の使い方)
はじめにMySQLでは、IN句を使うことで、IDを指定してテーブルから複数の行を一度に削除できます。削除したい値をカンマ区切りで列挙するだけなので、WHERE句を何度も書き分ける必要がなく、非常に便利です。基本構文IN句を使用した複数行削除の構文は以下の通りです。DELETE FROM テーブル名 WHERE カラム名 IN (値1, 値2, ... 値N);それでは、実際にサンプルテーブルを作成しながら動作を確認していきましょう。サンプルテーブルの作成まず、以下のクエリでテーブルを作成します。mysql> create table DeleteManyRows
-
PHPのdate_parse()関数でタイムスタンプから日・月・年を抽出する方法
date_parse()関数でタイムスタンプを解析するPHPでタイムスタンプ(日時文字列)から日・月・年を抽出するには、date_parse() 関数を使用します。この関数は日時文字列を解析し、年・月・日・時・分・秒などの情報を連想配列として返してくれます。基本構文は以下の通りです。print_r(date_parse(anyTimeStampValue));サンプルコード具体的なタイムスタンプ値を解析するPHPコードは以下のようになります。$yourTimeStampValue="2019-02-04 12:56:50"; print_r(date_parse($your