选择空的 mysql 日期时间字段

2022-08-30 15:00:08

有没有比这更好的方法来选择空的日期时间字段?

SELECT * FROM `table` WHERE `datetime_field` = '0000-00-00 00:00:00'

答案 1

在什么方面更好?该查询可以完成您要求它执行的所有操作,并且只要有索引,它就会尽可能快地获得。datetime_field

如果您担心查询看起来很“丑陋”,请不要担心。其意图非常明确。

您可以考虑的唯一可能的改进是对这些零日期/时间行使用 NULL,在这种情况下,您的查询将变为:

SELECT * FROM `table` WHERE `datetime_field` IS NULL

这就是我对符合标准的DBMS所做的。我的理解是,MySQL可能以这种可怕的方式表示真正的NULL日期时间字段,在这种情况下,我想这可能不起作用。IS NULL


答案 2

SELECT * FROM db.table WHERE UNIX_TIMESTAMP(datetime_field) = 0

我喜欢这个代码,因为它不仅捕获“零日期”(例如'0000-00-00 00:00:00')还捕获“日期中的零”(例如'2010-01-00 00:00:00')


推荐