我的数据库中有一个列,其中包含以下格式传入的日期: H:M:S,D.M.YYYY。 因为mysql无法将此格式解析为日期,所以我不得不将此列的类型设置为字符串。 快进几个月和几千条数据记录我现在设法将传入的数据格式更改为:yyyy-M-d H:m:s mysql可以将其解释为日期。
所以现在我想把旧的格式H:m:s,d.M.yyyy更改为新的yyyy-M-d H:m:s,在4个不同的表中,在多个thaus和记录上。在我这样做之后,我将只更改字符串列的类型到日期而没有任何冲突
所以我尝试的是:
UPDATE myTable
SET myColumn = REPLACE(myColumn , 'H:m:s,d.M.yyyy', 'yyyy-M-d H:m:s')
WHERE myColumn LIKE '%H:m:s,d.M.yyyy%'
但那不起作用,我也试过了,但我认为我的合成器已经关闭了:
更新myTable
SET myColumn = REPLACE(STR_TO_DATE(myColumn , 'H:m:s,d.M.yyyy', 'yyyy-M-d H:m:s'))
WHERE myColumn LIKE '%H:m:s,d.M.yyyy%'
是否有人有任何建议或替代解决方案?
答案 0 :(得分:1)
UPDATE myTable SET newdatecolumn=STR_TO_DATE(myColumn , '%H:%i:%s,%d.%M.%Y')
通过检查新列中的空值来检查是否所有日期都已成功转换。这就是为什么你应该有一个新列而不进行转换。
如果一切正常,则删除包含文本日期的列,并将新列重命名为旧列。
修改插入/更新代码,以便在该表中插入/更新日期时使用str_to_date()
。