使用str_to_date

时间:2015-06-12 17:23:24

标签: mysql str-to-date

我从XML文件导入数据,其中日期字段存储为文本。通常这很容易在mysql中转换,但问题是日期包含存储为第1,第2,第3,第4等的%e元素。因此,它使得无法应用标准的一致格式字符串。

date字段中的数据示例如下:

  

2014年8月25日(星期一)

     

2014年11月1日星期六

我的查询如下:

SELECT STR_TO_DATE(`date`, '%W %e %M %Y') as 'new_date' FROM `temp_match`;

由于日期字符串中的其他字符,此操作失败。所以我将格式字符串调整为'%W %eth %M %Y',并且正如预期的那样,这仅适用于带有''的日期。在他们中。我无法锻炼如何排除“' st'并且' nd'这可能发生在日期。

1 个答案:

答案 0 :(得分:0)

此方法有效但不理想。诀窍是替换' 1st',' 2nd',' 3rd'与' 1',' 2'和#3;'允许str_to_date发挥其魔力。

首先创建一个FUNCTION,它将清除上述问题,然后执行转换为DATE

BEGIN
    DECLARE new_date DATE;
    SET old_date = REPLACE(old_date, "1st", "1th");
    SET old_date = REPLACE(old_date, "2nd", "2th");
    SET old_date = REPLACE(old_date, "3rd", "3th");
    SET new_date = STR_TO_DATE(`old_date`, '%W %eth%M %Y');
    RETURN new_date;
END