我的sql 表中有一个create_date列,数据类型是varchar(225)。我的问题是,该列的值采用不同的日期格式请检查所附图片
我想使用创建 _date列创建另一个带有constant_date_format的列,有没有办法?
我尝试过使用 mysql str_to_date 函数:
STR_TO_DATE(create_date, '%m/%d/%Y')
如果 create_date 列具有相同的日期格式,它就可以工作。
您可以使用正则表达式
SELECT CASE WHEN create_date REGEXP [0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9] THEN STR_TO_DATE( create_date, '%m-%d-%Y') WHEN create_date REGEXP格式THEN STR_TO_DATE(create_date, '%m/%d/%Y') ELSE create_date END AS create_date FROM TABLE_NAME
如果您的数据与示例中的数据类似,则不可能这样做。考虑一下create_date中是否有一行带有 value 8.1.2017
:什么是constant_date_format?是1/8/2017
或8/1/2017
?
您至少在create_date中定义了固定的日/月顺序。然后您可以使用REPLACE
on create_date确保始终使用斜线或点,最后STR_TO_DATE
转换为日期。例如,如果您决定create_date有一个月前的一天,您可以这样做:
STR_TO_DATE(REPLACE(create_date, '.', '/'), '%m/%d/%Y')