MySQL/MariaDBで2038年問題に対応する

2023年09月30日 更新

概要: MySQL/MariaDBのTIMESTAMP型が2038年までしか扱えないという問題を対処する。

MySQL/MariaDBのTIMESTAMP型で扱える日時の最大範囲は「2038-01-19 03:14:07(UTC)」であり、それ以降の日時が取り扱えないことから深刻な問題が発生する可能性がある。そこで、TIMESTAMP型と同じく、日付と時刻の両方を扱えるDATETIME型に移行した。

解決方法

ALTER TABLE table_name MODIFY column_name DATETIME;

作業は上記のみで終了。型の変換に伴い、値を変換するといった作業は発生しなかった。

作業の流れ

環境

MariaDB 15.1

カラムの型をDATETIME型に変更する

テーブル名: table_name

カラム名: column_name

"NOT NULL"を付与して必須項目とする

"DEFAULT CURRENT_TIMESTAMP"を付与してINSERT時に自動的にタイムスタンプを付与する

"ON UPDATE CURRENT_TIMESTAMP"を付与してUPDATE時に自動的にタイムスタンプを更新する

ALTER TABLE table_name MODIFY column_name DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

カラムの定義を確認する

SHOW columns FROM table_name;

上記のクエリの結果で、カラム名「column_name」の型(Type)が「datetime」になっていれば正常に変更ができている。