我的日期格式有问题,我输入了格式为yyyy-mm-dd hh:ii的记录,而其他记录为dd-mm-yyyy hh:ii的记录,我想将所有日期格式更改为dd-mm -yy hh:ii有解决方案吗? 列类型为VARCHAR
我已经尝试过该代码:
将所有将日期作为字符串的列更新为日期列
UPDATE metric SET `dateColumn` = str_to_date(`dateColumn`,'%d-%m-%Y');
变更表
ALTER TABLE metric MODIFY `dateColumn` DATETIME;
我希望将所有日期格式从yyyy-mm-dd hh:ii更改为dd-mm-yyyy hh:ii
答案 0 :(得分:0)
根据以下格式应用不同的解析格式:
UPDATE metric SET
dateColumn = str_to_date(dateColumn,
case
when dateColumn like '__-%'
then '%d-%m-%Y %H:%i'
else '%y-%m-%d %H:%i'
end)
我不确定解析所使用的确切格式,因为我对这个问题不清楚,但是如果不正确的话,应该将其关闭。
答案 1 :(得分:0)
您的列的数据类型为VARCHAR
,因此在对其重新格式化之前,必须通过检查其当前格式将其转换为STR_TO_DATE()
的数据类型DATETIME
,然后将新格式应用于所有DATE_FORMAT()
行:
update metric
set dateColumn = date_format(
str_to_date(
dateColumn,
case
when dateColumn like '__-__-____ __:__' then '%d-%m-%Y %H:%i'
when dateColumn like '____-__-__ __:__' then '%Y-%m-%d %H:%i'
end
),
'%d-%m-%y %H:%i'
)
where dateColumn like '__-__-____ __:__' or dateColumn like '____-__-__ __:__'
需要WHERE
子句,以防万一还有其他格式。
参见demo。