我在尝试为日期字段设置默认值时不断收到此错误: “已创建”
的默认值无效ALTER TABLE artwork CHANGE COLUMN created created TIMESTAMP NOT NULL DEFAULT '1954-09-18 00:00:00' AFTER updated;
我每年都试过,我注意到在1970年之前,mysql拒绝了这个日期。我的意思是这不是一个大问题,我真的不需要默认日期是1954年,如果我想要那个日期主要是出于象征性的原因。
假设我的问题没有直接的解决方案,那么我的问题是:为什么mysql拒绝1970年之前的默认日期?
由于
答案 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'。