mysql - mysql为空日期时间列返回0000-00-00 00:00:00
问题描述
在我的一个 MySQL 表中,有一列 cancelled_dts 是 DateTime 类型,它接受空值,默认设置为“0000-00-00 00:00:00”
当我执行这样的查询“SELECT * FROM tablename where cancelled_dts IS NULL”时,它返回包含“0000-00-00 00:00:00”的行
我尝试在同一个数据库上使用以下查询
select if('0000-00-00 00:00:00' != '0000-00-00 00:00:00', 'Not Same', 'Same'),
if('0000-00-00 00:00:00' IS NULL, 'NULL', 'NOT NULL'),
if('0000-00-00 00:00:00' IS NOT NULL, 'NOT NULL', 'NULL')
检查行为,它给出的输出为“Same”、“NOT NULL”和“NOT NULL”。
解决方案
'0000-00-00 00:00:00'
在 mysql 中是无效的 DateTime 值,
DateTime.MinValue
是0001-01-01 00:00:00
,但列的最小支持值DATETIME
是1000-01-01 00:00:00
在 MySQL 服务器的许多版本中
推荐阅读
- c++ - 为什么KMP中最长的前缀也是后缀计算部分的时间复杂度是O(n)而不是O(n^2)?
- react-native - React 团队之间的原生模块化开发
- python - numpy 在张量流上的 hstack 用于单个矩阵/张量
- php - 在 Laravel 中使用 WHERE 返回空数组
- sql - 尝试创建视图时,我收到一条错误消息,指出 ORA-00904: "JOB": invalid identifier
- node.js - 请求调用使用 Request 的函数
- php - 使用级联从多个表中删除
- laravel - 在视图中显示存储文件夹中的图像
- html - 从 React 中的 textarea 获取插入的字符及其插入位置
- javascript - 在 ListView nativescript vuejs 上进行分组的数据操作