mysql无效的时间默认值_MySQL没有给出默认值时,时间戳的默认值无效.

尽管@jsnplank是正确的,时间戳的处理方式不同,但您应该考虑对这两个特定列使用datetime数据类型,但是,他无法解释错误消息.

错误消息很可能是mysql在没有提供默认值和sql模式设置时如何处理时间戳字段的结果.

>您将两个timestamp列定义为非null,而不设置任何特定的默认值.这意味着第一个时间戳列的默认值将是current_timestamp(),并且每当记录更改时也将更新为current_timestamp().这就是为什么第一个时间戳字段不会生成错误消息,无论哪个是第一个.

但是,如果您没有明确定义默认值,则第二个非空时间戳列的默认值将为’0000-00-00 00:00:00′.

见this blog post for more details.

>或许no_zero_date sql模式也会在您的服务器上显式启用或作为严格的sql模式的一部分启用.如果您希望将’0000-00-00 00:00:00’设置为默认值,或者希望将此值插入任何日期字段,则此sql模式会生成错误.

因此,您可以在表中使用timestamp数据类型,但是将第二个数据类型设置为可空或提供0或任何有效日期(例如epoch)作为显式默认值.

由于您使用这些字段标记开始日期和结束日期,因此将日期时间而不是时间戳作为数据类型可能是一个好主意.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值