mysql - 当专门选择 NOT NULL 字段时,是什么导致日期为 <null>?

标签 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 类型。

该数据库是已运行几年的产品数据库环境的副本。

一条记录怎么会处于这种状态?那是什么状态?我该如何正确修复它?

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/

相关文章:

mysql - 使用 2 个表中的数据

c# - EF 6 不在 Web.config 中使用连接字符串

c# - 扩展空检查的最佳方法是什么?

MYSQL 按小时返回 0

sql - 合并两个 SQL 查询

php - mysqli_num_rows 在 PHP 中总是显示 1(workbench 显示正常)

c# - 从 mysql 检索 blob 并在 asp.net c# 和 linq 数据源中使用中继器显示

php - 在 PHP 中运行多个查询插入错误值

mysql select between two dates 有奇怪的行为

sql - SQLite 索引的最佳数据类型