首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >1970年之前的默认日期值,无效的默认值

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

Stack Overflow用户
提问于 2011-08-30 06:56:21
回答 2查看 3.3K关注 0票数 2

在尝试为日期字段设置默认值时,我不断收到此错误:“created”的默认值无效

代码语言:javascript
复制
ALTER TABLE artwork CHANGE COLUMN created created TIMESTAMP NOT NULL DEFAULT '1954-09-18 00:00:00' AFTER updated;

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

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

谢谢

EN

回答 2

Stack Overflow用户

发布于 2011-08-30 07:02:44

我不熟悉mysql,但Unix时间戳(广泛使用)是自1970-01-01 00:00:00GMT以来的秒数。如果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。时间戳值存储为自纪元('1970-01-01 00:00:00‘UTC)以来的秒数。时间戳不能表示值'1970-01-01 00:00:00',因为这相当于距纪元0秒,而值0是为表示'0000-00-00 00:00:00‘保留的,即“零”时间戳值。

票数 3
EN

Stack Overflow用户

发布于 2011-08-30 07:04:13

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’。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7236951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档