在 MySQL 5.7 中,我有一个 varchar 列,其中包含一个字符串日期时间,如下所示:
`2024-09-03 02:00:07`
我可以运行此查询:
select date_format(str_to_date(`column1`, '%Y-%m-%d %H:%i:%s'), '%m/%d/%Y') from table;
这会以如下格式返回第 1 列日期:
09/03/2024
但是,当我运行此更新查询时:
update table set `column1` = date_format(str_to_date(`column1`, '%Y-%m-%d %H:%i:%s'), '%m/%d/%Y');
我收到以下错误:
Incorrect datetime value: '' for function str_to_date
列中存在一些空值。 我将表的结构更新为列上的
DEFAULT: NULL
,并选中了 Null 复选框:
我该如何解决这个问题,以便它能够相应更新?
在调用转换函数之前检查是否有空白值。
update table set `column1` =
CASE column1
WHEN '' THEN NULL
ELSE date_format(str_to_date(`column1`, '%Y-%m-%d %H:%i:%s'), '%m/%d/%Y')
END;