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

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型など)を設ける方法も検討するとよいでしょう。

  1. JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法

    MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI

  2. 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