【问题标题】:Timestamp comparison doesn't work on TIMESTAMP field时间戳比较不适用于 TIMESTAMP 字段
【发布时间】:2019-09-18 16:44:39
【问题描述】:

我有一个名为time的数据库列

`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP

但是当我使用PDO 运行以下查询时:

DELETE FROM `table` WHERE time < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL :days DAY))

它会抛出以下异常:

SQLSTATE[22007]:无效的日期时间格式:1292 不正确的日期时间值:第 1 行的列“时间”的“1555980012”

我不明白为什么会这样,谁能解释一下?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您不需要在 where 子句中使用 UNIX_TIMESTAMP 函数将日期转换为数字。 这应该没有问题:

    DELETE FROM `table` WHERE `time` < DATE_SUB(NOW(), INTERVAL :days DAY)
    

    【讨论】:

    • 但它在另一个表上运行良好,SELECT * FROM another_table WHERE search=:search AND time &gt; UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL :limit HOUR
    猜你喜欢
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    相关资源
    最近更新 更多