【发布时间】: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_created是TIMESTAMP,那么您不应该使用UNIX_TIMESTAMP()进行比较。DATE_SUB()的输出格式应正确。 -
TIMESTAMP类型是DATETIME类型,而不是像 unix 时间戳那样的 int。
标签: mysql