将不同的字符串日期转换为单一日期格式 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
我的 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