在mysql中将不同的字符串日期转换为单个日期格式

时间:2017-08-18 07:22:41

标签: mysql str-to-date

我的sql表中有一列 create_date ,数据类型为 varchar(225)。我的问题是,列值是不同的日期格式请检查附加的图像 enter image description here

我想使用 create _date 列创建另一个 constant_date_format 列,是否可以?

我尝试过使用mysql str_to_date函数:

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

如果create_date列具有相同的日期格式,则它正在工作。

2 个答案:

答案 0 :(得分:2)

您可以 时使用正则表达式

选择  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')    当create_date REGEXP 格式那么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 :(得分:1)

如果您的数据与示例中的数据类似,则无法执行此操作。考虑一下 create_date 中是否有一行值为8.1.2017 constant_date_format 是什么?这是1/8/20178/1/2017

您至少在 create_date 中定义了固定的日/月订单。然后,您可以在 create_date 上使用REPLACE,以确保始终使用slahses或点,最后STR_TO_DATE转换为日期。例如,如果您确定 create_date 具有前一天的月份,则可以执行以下操作:

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