我从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'这可能发生在日期。
答案 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