0

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

字段中的数据示例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',正如预期的那样,这只适用于其中包含“th”的日期。我无法锻炼如何排除日期中可能出现的“st”和“nd”字符。

4

1 回答 1

0

这种方法有效,但并不理想。诀窍是将 '1st'、'2nd'、'3rd' 替换为 '1th'、'2th' 和 '3th' 以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
于 2015-06-13T08:00:58.027 回答