我的sql表中有一列 create_date ,数据类型为 varchar(225)。我的问题是,列值是不同的日期格式请检查附加的图像
我想使用 create _date 列创建另一个 constant_date_format 列,是否可以?
我尝试过使用mysql str_to_date函数:
STR_TO_DATE(create_date, '%m/%d/%Y')
如果create_date列具有相同的日期格式,则它正在工作。
答案 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
答案 1 :(得分:1)
如果您的数据与示例中的数据类似,则无法执行此操作。考虑一下 create_date 中是否有一行值为8.1.2017
: constant_date_format 是什么?这是1/8/2017
或8/1/2017
?
您至少在 create_date 中定义了固定的日/月订单。然后,您可以在 create_date 上使用REPLACE
,以确保始终使用slahses或点,最后STR_TO_DATE
转换为日期。例如,如果您确定 create_date 具有前一天的月份,则可以执行以下操作:
STR_TO_DATE(REPLACE(create_date, '.', '/'), '%m/%d/%Y')