【问题标题】:Convert different string date, into one single date format In mysql在mysql中将不同的字符串日期转换为一种日期格式
【发布时间】:2018-01-26 19:03:36
【问题描述】:

我的 sql 表中有一个列 create_date,数据类型是 varchar(225)。我的问题是,该列的值采用不同的日期格式请检查所附图片

我想使用 create _date 列创建另一个具有 constant_date_format 的列,有什么办法吗?

我已经尝试过使用 mysql str_to_date 函数:

STR_TO_DATE(create_date, '%m/%d/%Y') 

如果 create_date 列具有相同的日期格式,则它可以工作。

【问题讨论】:

    标签: mysql str-to-date


    【解决方案1】:

    你可以用正则表达式case when

    选择 CASE WHEN create_date REGEXP [0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9] THEN STR_TO_DATE(create_date , '%m-%d-%Y') WHEN create_date REGEXP 格式 THEN STR_TO_DATE(create_date, '%m/%d/%Y') 否则创建日期 END AS create_date FROM TABLE_NAME

    https://www.guru99.com/regular-expressions.html

    【讨论】:

      【解决方案2】:

      如果您的数据与示例中的数据类似,则不可能这样做。考虑一下您是否在 create_date 中有一行,其值为 8.1.2017constant_date_format 是什么?是1/8/2017 还是8/1/2017

      您至少在 create_date 中定义了固定的日/月顺序。然后您可以在 create_date 上使用 REPLACE 以确保始终使用斜线或点,最后使用 STR_TO_DATE 转换为日期。例如,如果您决定 create_date 有一个月前一天,您可以这样做:

      STR_TO_DATE(REPLACE(create_date, '.', '/'), '%m/%d/%Y')
      

      【讨论】:

        猜你喜欢
        • 2021-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多