【问题标题】:MySql deleting rows after a given time. Error 1292 Incorrect datetime value: '1537019628' on a timestampMySql 在给定时间后删除行。错误 1292 不正确的日期时间值:时间戳上的“1537019628”
【发布时间】:2019-02-24 21:18:53
【问题描述】:

我需要删除表警报中早于给定日期的行。我有一个 date_created 列,它是一个自动时间戳设置为默认值。我在加载执行此代码时从我的 Windows 窗体运行查询:

delete from shopmanager.alerts 
where date_created < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 5 DAY))

它在foirm中不起作用,所以我在Workbench中尝试了它并收到消息:

0 行受影响,1 个警告:1292 日期时间值不正确:第 1 行的列“date_created”的“1537019628”

date_created 设置为 TIMESTAMP,默认值为 CURRENT_TIMESTAMP。 为什么它在它自己创建的日期返回此错误?我做错了什么?

【问题讨论】:

  • 如果date_createdTIMESTAMP,那么您不应该使用UNIX_TIMESTAMP() 进行比较。 DATE_SUB() 的输出格式应正确。
  • TIMESTAMP 类型是 DATETIME 类型,而不是像 unix 时间戳那样的 int。

标签: mysql


【解决方案1】:

如果是时间戳你只需要使用这个:

DATE_SUB(NOW(), INTERVAL 5 DAY

【讨论】:

    【解决方案2】:

    在 Michael Berkowski 的评论之后,这是对遇到此问题的其他任何人都非常有效的代码修改:

    delete from shopmanager.alerts where date_created < (DATE_SUB(NOW(), INTERVAL 5 DAY))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 2014-06-28
      • 2017-11-19
      • 1970-01-01
      • 2014-05-13
      • 1970-01-01
      • 2017-12-10
      相关资源
      最近更新 更多