是什么导致 Date 在专门选择 NOT NULL 字段时为 <null>?
What causes a Date to be <null> while specifically selecting the NOT NULL fields?
在我的一个 MYSQL 数据库中,我做了以下查询:
SELECT * FROM mytable WHERE date_column < 1971-01-01 AND date_column IS NOT NULL;
这 returns 大约 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;
其次,这不能 return date_column 的 NULL
值。这表明两件事之一:
date_col
实际上是另一种类型,例如 varchar
,您看到的是 'NULL'
字符串,而不是 NULL
值。
- 另一列是
NULL
。
在我的一个 MYSQL 数据库中,我做了以下查询:
SELECT * FROM mytable WHERE date_column < 1971-01-01 AND date_column IS NOT NULL;
这 returns 大约 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;
其次,这不能 return date_column 的 NULL
值。这表明两件事之一:
date_col
实际上是另一种类型,例如varchar
,您看到的是'NULL'
字符串,而不是NULL
值。- 另一列是
NULL
。