我被要求将数据从一个表迁移到另一个表。旧数据包括以杂乱混搭形式输入的一系列日期,而该杂乱输入格式是用户当时使用的任何格式,新格式则需要在MM / YYYY中使用单独的FROM date和TO date字段。
因此,某些日期是单个日期,例如DD.MM.YYYY或DD / MM / YY或DD YYYY或YYYY或其他。某些日期都是日期,例如DD.MM.YYYY-DD / YYYY或DD / MM / YY--DD / MM / YYYY。所以只是一团糟。只有几百行,但如果可以避免的话,我不想手动进行更改。
Google的大多数结果都是将一种格式转换为另一种格式,我怎么能将多种格式转换为另一种格式?
答案 0 :(得分:3)
使用单个表达式来包含所有组合很困难,所以只需一一地做模式:
UPDATE olddata,newdata
SET newdata.date=STR_TO_DATE(olddate.date, "%d.%m.%Y")
WHERE olddata.id=newdata.id
AND olddata.date REGEXP '[:digit:]{1,2}\.[:digit:]{1,2}.[:digit:]{4}'
AND newdata.date IS NULL
对每种日期格式多次进行此操作,并在STR_TO_DATE中使用正确的表达式。在进行更新之前,请尝试使用正确的调节表达式进行选择。
最终,您将有足够的记录来手动编辑