0

我的sql 表中有一个create_date列,数据类型是varchar(225)。我的问题是,该列的值采用不同的日期格式请检查所附图片 在此处输入图像描述

我想使用创建 _date列创建另一个带有constant_date_format的列,有没有办法?

我尝试过使用 mysql str_to_date 函数:

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

如果 create_date 列具有相同的日期格式,它就可以工作。

4

2 回答 2

2

您可以使用正则表达式

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

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

于 2017-08-18T07:40:08.580 回答
1

如果您的数据与示例中的数据类似,则不可能这样做。考虑一下create_date中是否有一行带有 value 8.1.2017:什么是constant_date_format?是1/8/20178/1/2017

您至少在create_date中定义了固定的日/月顺序。然后您可以使用REPLACEon create_date确保始终使用斜线或点,最后STR_TO_DATE转换为日期。例如,如果您决定create_date有一个月前的一天,您可以这样做:

STR_TO_DATE(REPLACE(create_date, '.', '/'), '%m/%d/%Y')
于 2017-08-18T07:34:30.750 回答