広告

【MySQL】DATETIME型でデータの更新日を自動表示する手順(phpMyAdmin)

2019年9月4日

MySQLのDATETIME型を使うことで、データの更新日を自動で表せる!のでメモっす。

MySQLのDATETIME型で自動日付更新されるGIF

MySQL(phpMyAdmin)のDATETIME型で更新日時付与する

そもそもtimestamp型でも、データ更新された日付の自動取得は可能なのですが、どうやら2038年問題というものに引っかかっている型なようです。

【出典】2038年問題 -Wikipedia

2038問題とは?

2038年1月19日3時14分7秒を過ぎたとき、コンピューターが誤作動を起こし、時刻に狂いが生じるとされる問題。

MuySQLの初学者な僕としては、重大なバグになったら改修できなそう、と感じたのでDATETIME型を使って日付更新を学んでいこうと決意

DATETIME 型は、日付と時間の両方の部分を含む値に使用されます。MySQL では、DATETIME 値の取得と表示は 'YYYY-MM-DD HH:MM:SS' 形式で行われます。サポートしている範囲は '1000-01-01 00:00:00' から '9999-12-31 23:59:59' です。

【引用】MySQL:11.3.1 DATE、DATETIME、および TIMESTAMP 型

今回は以下のテーブルを使って、DATETIME型の設定を行っていきます。

SELECT * FROM mytable

DATETIME型のテスト対象となるテーブル

1. 構造タブを選択して新規カラムを追加

構造タブをクリックして、

構造タブをクリック

カラムを任意の位置に追加するで実行。

カラムを追加する

2.カラム編集画面でDATE TIME型を定義

カラムの編集画面に入るので、以下のように選択して保存

  • 名前:登録日(適当)
  • データ型:DATETIME
  • 属性:on update current_timestamp
ALTER TABLE `mytable` ADD `登録日` DATETIME on update CURRENT_TIMESTAMP NOT NULL AFTER `yomi`;

名前とデータ型は以下に設定して、

名前に登録日、データ型にDATETIMEを設定

属性は「on update current_timestamp」を設定。

属性にon update current_timestampを設定

3. DATETIME型が動くか動作確認

表示タブを選択してテーブルを表示すると、

SELECT * FROM mytable

表示タブをクリック

登録日のカラムが増えてるのが分かります↓

テーブルに登録日が設定された

idの4と5が重複してるので、id=5のレコードの内容を編集します。5行目の「編集」をクリック

5行目の編集をクリック

補足
phpMyAdminは項目をダブルクリックすることで、すぐに内容の編集ができますが、日時の変更はなされません。

yomiの行のテキスト「みず」を「すい」へテキストを修正し実行。

みずからすいへテキスト変更したGIF

編集したレコードの登録日に最新日時が入りました!

編集したレコードの日付が更新された

いえーい。

注意!
テキストの追加や削除、編集など行わずにレコードの編集画面を更新・実行しただけでは、日時の変更がなされません

まとめ

レコードの編集や追加した日時を自動で取得できるようになれば、

  • 何をいつやったのか
  • いつ取得したのか

などなど、履歴を追いながら改善を測ることが容易になるのではないでしょうか。

OYAKUN
OYAKUN
次回はMySQLにてSUMやCOUNTなど利用して、テーブルの値で計算を行ってみます!
次回記事
mysql-orderby-sort
【MySQL】ORDER BY句でデータの並び替えを行う方法

MySQLではORDER BY句でフィールドを指定することで、テーブル内の並びかえを行うことができます。 ここではMyS ...

続きを見る

関連記事:【MySQL】ORDER BY句でデータの並び替えを行う方法
関連記事:MySQLのWHEREとLIKE演算子でデータ検索する方法
関連記事:MySQLでWHERE句使ってデータ抽出する手順