一个好奇的mysql时间戳插入

时间:2012-08-08 05:16:23

标签: mysql insert timestamp

我偶然发现了一个日期值大于当前日期的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支持的最大时间戳,这次有意义的时刻是什么时候?

1 个答案:

答案 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?