在我的一个 MYSQL 数据库中,我做了以下查询:
SELECT * FROM mytable WHERE date_column < 1971-01-01 AND date_column IS NOT NULL;
这将返回大约 3000 个项目,其中日期在 mysql 命令行提示符和 IntelliJ IDEA mysql 数据库编辑器中显示为 NULL。
该列具有 DATE 类型。
该数据库是已运行几年的产品数据库环境的副本。
一条记录怎么会处于这种状态?那是什么状态?我该如何正确修复它?
PS:< 1971/01/01
子句只是为了从查询中过滤出正确的日期。如果我只是查询 IS NOT NULL 子句,当然我仍然会得到这些奇怪的日期。
最佳答案
我很惊讶这有效。首先,日期常量应该用单引号引起来:
SELECT *
FROM mytable
WHERE date_column < '1971-01-01' AND date_column IS NOT NULL;
其次,这不能为 date_column 返回 NULL
值。这表明以下两件事之一:
date_col
实际上是另一种类型,例如varchar
并且您看到的是'NULL'
字符串,而不是NULL
值。- 另一列是
NULL
。
关于mysql - 当专门选择 NOT NULL 字段时,是什么导致日期为 <null>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44114169/