MySQL

2016-06-28, mysql

MySQLの2038年問題

MySQLの5.6.29で実験しました。以下のように、DATE,DATETIME,TIMESTAMP型のフィールドを持つテーブルに2040年の日付を登録してみます。

mysql> SELECT * FROM t;
+------------+---------------------+---------------------+
| d | t | ts |
+------------+---------------------+---------------------+
| 2040-01-01 | 2040-01-01 10:00:00 | 2016-06-28 11:04:42 |
+------------+---------------------+---------------------+
3 rows in set (0.00 sec)

TIMESTAMP型のフィールドはエラーになるようです。

mysql> INSERT INTO t VALUES ('2040-01-01','2040-01-01 10:00:00','2040-01-01 10:00:00');
ERROR 1292 (22007): Incorrect datetime value: '2040-01-01 10:00:00' for column 'ts' at row 1

DATEとDATETIMEには2038年を超えた値も格納されます。

mysql> INSERT INTO t VALUES ('2040-01-01','2040-01-01 10:00:00',NULL);
Query OK, 1 row affected (0.02 sec)

参考URL

この記事は役に立ちましたか?