MySQLデータベースの最終更新日時を取得する方法
MySQLデータベースやテーブルが最後に更新された日時を確認したい場合、INFORMATION_SCHEMA.TABLESを利用することで簡単に取得できます。この記事では、具体的な手順とサンプルコードを交えながら、最終更新日時(UPDATE_TIME)の取得方法を解説します。
基本構文
information_schema.tablesからupdate_timeカラムを選択することで、指定したテーブルの最終更新日時を取得できます。構文は以下の通りです。
SELECT update_time FROM information_schema.tables WHERE table_schema = 'yourDatabaseName' AND table_name = 'yourTableName';
table_schemaにはデータベース名、table_nameには対象のテーブル名を指定します。それでは、実際にサンプルテーブルを作成して動作を確認してみましょう。
サンプルテーブルの作成
まず、動作確認用のテーブルを作成します。以下のクエリを実行してください。
mysql> create table TblUpdate
-> (
-> Id int not null auto_increment primary key,
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.49 sec)次に、INSERT文を使ってレコードを挿入します。
mysql> insert into TblUpdate(Name) values('John');
Query OK, 1 row affected (0.18 sec)
mysql> insert into TblUpdate(Name) values('Carol');
Query OK, 1 row affected (0.22 sec)SELECT文でテーブル内の全レコードを表示してみましょう。
mysql> select *from TblUpdate;
出力結果
+----+-------+ | Id | Name | +----+-------+ | 1 | John | | 2 | Carol | +----+-------+ 2 rows in set (0.00 sec)
テーブルを更新する
続いて、UPDATE文でテーブルの内容を変更します。ここではIdが2のレコードのNameを「James」に更新します。
mysql> update TblUpdate set Name = 'James' where Id=2; Query OK, 1 row affected (0.15 sec) Rows matched: 1 Changed: 1 Warnings: 0
これでテーブルの更新が完了しました。それでは、information_schema.tablesに対してクエリを実行し、最終更新日時を取得してみます。
最終更新日時の取得
mysql> SELECT update_time
-> FROM information_schema.tables
-> WHERE table_schema = 'sample'
-> AND table_name = 'TblUpdate'
-> ;実行結果は以下の通りです。2019-02-09 22:49:44にデータベースが更新されたことが確認できます。
+---------------------+ | UPDATE_TIME | +---------------------+ | 2019-02-09 22:49:44 | +---------------------+ 1 row in set (0.89 sec)
補足:注意点
なお、UPDATE_TIMEの値はストレージエンジンによって挙動が異なる点に注意が必要です。InnoDBの場合、キャッシュの都合によりNULLが返されることがあり、MyISAMのように正確な更新日時が常に記録されるわけではありません。確実な値を得たい場合は、テーブルをMyISAMで作成するか、アプリケーション側で更新日時を管理するカラム(TIMESTAMP型など)を設ける方法も検討するとよいでしょう。
-
JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法
MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI
-
MySQLデータベースへの挿入時にdecimal(19,2)の値が変わる?truncate()で正確な値を保存する方法
decimal(19,2)の値が変わる原因と対処法MySQLのDECIMAL(19,2)型カラムに値を直接挿入すると、小数点以下3桁目が四捨五入され、元の値と異なる数値が保存されることがあります。正確な実数値をそのまま保存したい場合は、truncate()関数を使って小数点以下2桁で切り捨ててから挿入します。テーブルの作成まず、以下のクエリでテーブルを作成します。mysql> create table demo59-> (-> price decimal(19,2)-> );Query OK, 0 rows affected (1.12 sec)レコードの挿入次に、in