首页 > 解决方案 > MySql 在给定时间后删除行。错误 1292 不正确的日期时间值:时间戳上的“1537019628”

问题描述

我需要删除表警报中早于给定日期的行。我有一个 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。为什么它在它自己创建的日期返回此错误?我究竟做错了什么?

标签: mysql

解决方案


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

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

推荐阅读