将timpestamps与MySql

时间:2018-06-19 10:09:14

标签: mysql

我有一个包含列last_crawled_article_at timestamp default NULL

的表

当我尝试使用WHERE子句进行更新时,我注意到了一个问题:

UPDATE feed
    SET last_crawled_article_at=?, last_captured_id=?
    WHERE
        feed = ? AND
        last_crawled_article_at < ?

如果last_crawled_article_atNULL,则更新永远不会成功,因为没有包含last_crawled_article_at大于NULL的任何行。

如果我的表中有一个带有时间戳NULL的条目,我会进行下一个查询:

SELCT FROM feed WHERE last_crawled_article_at < '2018-01-01 00:00:00'

Mysql不会返回任何内容。

我解决此问题的方法是将last_crawled_article_at添加到0000-00-00 00:00:00

我的问题是,为什么lt时间戳范围查询不会返回值为NULL的条目?

以某种方式建议不要将timestamp字段作为默认值使用NULL字段?

1 个答案:

答案 0 :(得分:0)

如果您还想更新空值,则必须添加or last_crawled_article_at is null

UPDATE feed
    SET last_crawled_article_at=?, last_captured_id=?
    WHERE
        feed = ? AND
        (last_crawled_article_at < ? or last_crawled_article_at is null)