2017-08-18 22 views
0

我有我的SQL表中的列CREATE_DATE,数据类型为VARCHAR (225)。我的问题是,在该列的值是在不同的日期格式请检查连接的图像 enter image description here转换不同的字符串日期,到一个单一的日期格式在MySQL

我想与constant_date_format创建另一列使用创建_DATE列,有没有办法?

我曾尝试与MySQL STR_TO_DATE功能:

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

这是工作,如果CREATE_DATE列具有相同的日期格式。

回答

2

您可以情况下用正则表达式

选择 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

1

如果您的数据与示例中的数据类似,则无法这样做。考虑如果你有一排create_date与值8.1.2017:什么是constant_date_format为什么?这是1/8/20178/1/2017

您至少已在create_date中定义固定的日/月订单。然后,您可以使用REPLACE上的create_date以确保始终使用slahses或dots,最后STR_TO_DATE转换为日期。例如,如果你决定CREATE_DATE有一天前一个月,你可以这样做:

STR_TO_DATE(REPLACE(create_date, '.', '/'), '%m/%d/%Y') 
相关问题