在我的一个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子句,我当然还会得到这些奇怪的日期。
答案 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
。