【问题标题】:Set mysql Zero date results to null or a blank string将 mysql 零日期结果设置为 null 或空字符串
【发布时间】:2017-02-14 21:36:23
【问题描述】:

我正在使用 str_to_date() 作为插入命令的一部分,该字段包含格式正确的日期或空白字符串。

对于具有空字符串 str_to_date 的行,按预期返回“0000-00-00 00:00:00”的零日期。

我可以使用 IGNORE 关键字作为 INSERT 语句的一部分来防止错误,但是在表中包含零日期会导致以后尝试将该字段与其他值进行比较时出现问题。我的目标是插入空白字符串或空值。谁能指出我正确的方向?

【问题讨论】:

  • 你的数据库中的列是什么类型的?如果是DATETIME,则不能存储空白字符串。 (另外,您是否允许在该字段中使用 NULL 值?)您在比较时遇到了哪些“问题”?你可能在那里做错了什么。
  • 你可以做类似NULLIF(str_to_date(''), '0000-00-00 00:00:00')的事情。

标签: mysql


【解决方案1】:

一个解决方案是这样的:

insert into mytable
select
  case
    when varchar_date != '' then str_to_date(varchar_date, 'date_format')
  end as date_column,
  ...
from
  ...

(只要 varchar_date 不为空,调用 str_to_date 函数,如果 varchar_date 是有效字符串,则返回有效日期,如果为空则返回 null)

【讨论】:

    猜你喜欢
    • 2018-01-09
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2022-01-08
    • 2013-12-28
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多