什么原因导致Date在<null>中专门选择NOT NULL字段?

时间:2017-05-22 13:28:01

标签: mysql sql isnull

在我的一个MYSQL数据库中,我完成了以下查询:

SELECT * FROM mytable WHERE date_column < 1971-01-01 AND date_column IS NOT NULL;

这将返回大约3000个项目,其中日期在mysql命令行提示符和IntelliJ IDEA mysql数据库编辑器中显示为NULL。

该列具有DATE类型。

数据库是已运行了几年的prod数据库环境的副本。

记录如何以该状态结束?那个州是什么?我该如何妥善解决?

PS:< 1971/01/01子句只是为了过滤查询中的正确日期。如果我只查询IS NOT NULL子句,我当然还会得到这些奇怪的日期。

1 个答案:

答案 0 :(得分:3)

我很惊讶这个作品。首先,日期常量应该用单引号括起来:

SELECT *
FROM mytable
WHERE date_column < '1971-01-01' AND date_column IS NOT NULL;

其次,这不能为date_column返回NULL值。这表明了两件事之一:

  • date_col实际上是另一种类型,例如varchar,您看到'NULL'字符串,而不是NULL值。
  • 另一列是NULL