【问题标题】:How to update date format in all records in mysql如何更新mysql中所有记录的日期格式
【发布时间】:2022-01-16 04:55:22
【问题描述】:

我有一个数据类型为“Varchar”的字段“date_of_service”。目前我们以 mm/DD/yyyy 格式插入记录。现在我只想将格式更新为 yyyy-mm-dd。 如何使用查询更新它们?

【问题讨论】:

    标签: mysql mysql-workbench


    【解决方案1】:

    通过格式化解析日期更新:

    update mytable set
    date_of_service = date_format(str_to_date(date_of_service, '%m/%d/%Y'), '%Y-%m-%d`)
    

    或者,使用正则表达式!

    update mytable set
    date_of_service = regexp_replace(date_of_service, '(.*)/(.*)/(.*)', '\\3-\\1-\\2')
    

    【讨论】:

    • 谢谢@Bohemian,它对我有用。
    【解决方案2】:

    理想情况下,您应该将date_of_service 字段设置为日期列。话虽如此,如果您想将其保留为文本但更改格式,请使用:

    UPDATE yourTable
    SET date_of_service = DATE_FORMAT(STR_TO_DATE(date_of_service, '%m/%d/%Y'),
                                      '%Y-%m-%d');
    

    另一种方法,使用子串操作:

    UPDATE yourTable
    SET date_of_service = CONCAT(RIGHT(date_of_service, 4), '-',
                                 LEFT(date_of_service, 2), '-',
                                 SUBSTRING(date_of_service, 4, 2));
    

    【讨论】:

      【解决方案3】:

      您应该在表中创建一个带有 DATE 类型的新字段,可能称为 new_date

      您必须使用 SUBSTRING 函数分隔旧日期,例如,字符串的第一个位置是 1,因此年份位置从 7 开始并占用 4 个字符。代码将是这样的:

      UPDATE your_table SET new_date = CONCAT(SUBSTRING(old_date,7,4),'-',SUBSTRING(old_date,1,2),'-',SUBSTRING(old_date,4,2));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-04
        • 1970-01-01
        • 2013-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多