我使用 UPDATE 查询来修复日期。它与我之前使用的 CASE 语句查询相同。它会检查 VARCHAR 日期是否为空,如果为空,则将其设置为 NULL。否则,更改日期的格式。
由于某种原因,它将所有日期设置为 NULL。
重新导入数据后,我开始使用 SELECT(这可能是更好的做法)。以下是 SELECT:
SELECT `dateColumn`, CASE `dateColumn`
WHEN '' THEN NULL
ELSE date_format(str_to_date(`dateColumn`, '%m/%d/%Y %H:%i:%s %P'), '%Y-%m-%d')
END AS 'NEW DATE'
FROM `table` where `EmailAddress` = '[email protected]';
这给了我以下结果:
dateColumn | NEW DATE
----------------------------------------
9/9/2024 12:00:00 AM | NULL
格式似乎正确。不确定为什么它会将日期更改为 NULL。
请帮忙。
** 编辑 **
我刚刚注意到我收到一条警告,内容是:
Warning: #1411 Incorrect datetime value: '9/9/2024 12:00:00 AM' for function str_to_date
这不太可能是导致错误的原因。
没有大写字母,
%P
文档指出%p
am/pm 使用小写字母。str_to_date
如果无法解析格式,将返回 null。此外,由于您有上午/下午的时间,
%h
因此您应该使用 01 到 12。我也改变了
case
一些语法。请参阅此处的工作: https: //sqlfiddle.com/mysql/online-compiler?id= 54541e8d-2bd1-43bc-93b9-e62a511aab0a