从任意日期转换为单一日期格式

时间:2018-10-21 00:43:34

标签: php mysql date

我被要求将数据从一个表迁移到另一个表。旧数据包括以杂乱混搭形式输入的一系列日期,而该杂乱输入格式是用户当时使用的任何格式,新格式则需要在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的大多数结果都是将一种格式转换为另一种格式,我怎么能将多种格式转换为另一种格式?

1 个答案:

答案 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中使用正确的表达式。在进行更新之前,请尝试使用正确的调节表达式进行选择。

最终,您将有足够的记录来手动编辑