【问题标题】:mysql return 0000-00-00 00:00:00 for null datetime columnmysql为空日期时间列返回0000-00-00 00:00:00
【发布时间】:2021-09-01 14:56:24
【问题描述】:

在我的其中一个 MySQL 表中有一列 cancelled_dts 是 DateTime 类型,它接受 null 值,默认设置为“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”。

【问题讨论】:

  • 能否给出表定义,以及一些示例数据?
  • if 条件下,您使用 strings 进行操作。所以它与空的 dates 无关。
  • CREATE TABLE example_table ( -- cancelled_dts datetime DEFAULT '0000-00-00 00:00:00' COMMENT '取消日期和时间', -- ) ENGINE=InnoDB AUTO_INCREMENT=53233默认字符集=utf8 ;
  • @BartFriederichs 上面添加的架构不能共享所有列

标签: mysql datetime


【解决方案1】:

'0000-00-00 00:00:00' 在 mysql 中是无效的 DateTime 值, DateTime.MinValue0001-01-01 00:00:00,但在 MySQL 服务器的许多版本中,DATETIME 列的最小支持值是 1000-01-01 00:00:00

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-07-12
  • 2014-02-19
  • 2016-06-04
  • 2013-06-09
  • 2017-09-21
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
相关资源
最近更新 更多