我偶然发现了一个日期值大于当前日期的mysql时间戳插入问题 现在以下步骤是
CREATE TABLE foo(
`ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`test_time`TIMESTAMP NULL DEFAULT NULL,
PRIMARY KEY (`ID`)
);
INSERT INTO foo(test_time) VALUES('2038-01-19 11:14:08'); // fail
INSERT INTO foo(test_time) VALUES('2038-01-19 11:14:07'); // ok
INSERT INTO foo(test_time) VALUES('2038-01-18 23:59:00'); // ok
INSERT INTO foo(test_time) VALUES('2039-01-01 00:00:00'); // fail
fail表示test_time值为0000-00-00 00:00:00 我的时区是UTC + 8 我想知道2038-01-19 11:14:07是否是mysql支持的最大时间戳,这次有意义的时刻是什么时候?
答案 0 :(得分:4)
要为日期存储更高的值,必须使用DATETIME
数据类型。
TIMESTAMP
的范围为'1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC
DATETIME
的范围为'1000-01-01 00:00:00' to '9999-12-31 23:59:59'
http://dev.mysql.com/doc/refman/5.5/en/datetime.html
正如@Joachim Isaksson所建议的:PHP & mySQL: Year 2038 Bug: What is it? How to solve it?