【问题标题】:Ignore characters in date string when using str_to_date使用 str_to_date 时忽略日期字符串中的字符
【发布时间】:2015-08-28 19:20:24
【问题描述】:

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

【问题讨论】:

    标签: mysql str-to-date


    【解决方案1】:

    此方法有效,但并不理想。诀窍是将“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
    

    【讨论】:

      猜你喜欢
      • 2020-10-09
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多