1970年之前的默认日期值,默认值无效

时间:2011-08-29 22:56:21

标签: mysql date

我在尝试为日期字段设置默认值时不断收到此错误: “已创建”

的默认值无效
ALTER TABLE artwork CHANGE COLUMN created created TIMESTAMP NOT NULL DEFAULT '1954-09-18 00:00:00' AFTER updated;

我每年都试过,我注意到在1970年之前,mysql拒绝了这个日期。我的意思是这不是一个大问题,我真的不需要默认日期是1954年,如果我想要那个日期主要是出于象征性的原因。

假设我的问题没有直接的解决方案,那么我的问题是:为什么mysql拒绝1970年之前的默认日期?

由于

2 个答案:

答案 0 :(得分:3)

我不熟悉mysql,但Unix时间戳(广泛使用)是自1970-01-01 00:00:00 GMT以来的秒数。如果mysql在内部使用该格式,则可能不喜欢具有负值的时间戳。

修改

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-type-overview.html

  

时间戳

     

时间戳。范围是'1970-01-01 00:00:01'UTC到'2038-01-19   03:14:07'UTC。 TIMESTAMP值存储为秒数   自纪元('1970-01-01 00:00:00'UTC)。 TIMESTAMP不能   表示值'1970-01-01 00:00:00',因为这是等效的   从纪元开始到0秒,保留值0   表示'0000-00-00 00:00:00',“零”TIMESTAMP值。

答案 1 :(得分:2)

MySQL的TIMESTAMP类型是一个代表Unix time的计数器。这是自1970年1月1日开始以来的秒数。为什么签名(最长日期是在2038年 - 如果未签名将允许的时间的一半)并且不允许在1970-2038之外的日期范围超出我的范围。另请参阅MySQL documentation on this column type

DATETIME列类型使用两倍的空间(8个字节),但支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。