当前位置:  开发笔记 > 编程语言 > 正文

选择空的mysql datetime字段

如何解决《选择空的mysqldatetime字段》经验,为你挑选了5个好方法。

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

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

paxdiablo.. 41

更好的方式?那个查询可以完成你所要求的一切,只要有一个索引datetime_field,它就会得到它的速度.

如果您担心查询看起来"丑陋",请不要.它的意图非常明确.

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

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

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



1> paxdiablo..:

更好的方式?那个查询可以完成你所要求的一切,只要有一个索引datetime_field,它就会得到它的速度.

如果您担心查询看起来"丑陋",请不要.它的意图非常明确.

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

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

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



2> Orlando Cola..:

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

I like this code because it not only catches "zero dates" (e.g. '0000-00-00 00:00:00') is also catches "zeroes in dates" (e.g. '2010-01-00 00:00:00')



3> 小智..:

如果您的日期/日期时间列不是NULL,您可以使用:

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

MySQL将为您选择等于'0000-00-00 00:00:00'的列.

注意:如果你这样做:

SELECT `datetime_field` IS NULL

MySQL将返回0(false),但当用作WHERE子句的一部分时,此语句将为true.

从手册

对于声明为NOT NULL的DATE和DATETIME列,您可以使用如下语句找到特殊日期'0000-00-00':

SELECT * FROM tbl_name WHERE date_column IS NULL

这是使一些ODBC应用程序工作所必需的,因为ODBC不支持'0000-00-00'日期值.



4> 小智..:

或者你可以简单地做:

SELECT * FROM `table` WHERE `datetime_field` = 0



5> 小智..:

我用这个:

SELECT * FROM `table` WHERE UNIX_TIMESTAMP(`datetime_field`) = 0

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有