将不同的字符串日期转换为单一日期格式 In mysql

Convert different string date, into one single date format In mysql

我的 sql table 中有一列 create_date,数据类型是 varchar(225)。我的问题是,该列值采用不同的日期格式,请检查所附图片

我想使用 create _date 列创建另一个包含 constant_date_format 的列,有办法吗?

我试过 mysql str_to_date 函数:

STR_TO_DATE(create_date, '%m/%d/%Y') 

如果 create_date 列具有相同的日期格式,则可以正常工作。

如果你的数据和例子中的一样,那是不可能的。考虑一下如果 create_date 中有一行值为 8.1.2017:那是什么 constant_date_format?是 1/8/2017 还是 8/1/2017?

您至少在 create_date 中定义了一个固定的 day/month 顺序。然后你可以在 create_date 上使用 REPLACE 来确保你总是使用斜杠或点,最后 STR_TO_DATE 转换为日期。例如,如果您决定 create_date 有一个月前一天,您可以这样做:

STR_TO_DATE(REPLACE(create_date, '.', '/'), '%m/%d/%Y')

您可以 case when 使用正则表达式

SELECT create_date REGEXP [0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9] 时的情况然后 STR_TO_DATE(create_date, '%m-%d-%Y') WHEN create_date REGEXP Format THEN STR_TO_DATE(create_date, '%m/%d/%Y') 其他 create_date 结束为 create_date 来自 TABLE_NAME

https://www.guru99.com/regular-expressions.html