【问题标题】:Mysql - Change verbose date format to Y-m-dMysql - 将详细日期格式更改为 Y-m-d
【发布时间】:2019-03-08 05:22:21
【问题描述】:

我正在从事一个显然是由一个完全初学者构建的项目。日期以“2010 年 1 月 20 日”的格式存储在 varchar 列中。我需要将此列转换为DATEDATETIME,但是当我这样做时(在备份中),值变为0000-00-00

在使用 str_to_date()DATE() 函数更改列类型之前,我尝试将值转换为正确的格式,但两者都报告无效的字符串格式。是否可以将此数据转换为有效的日期格式?

【问题讨论】:

    标签: mysql date type-conversion


    【解决方案1】:

    使用STR_TO_DATE,并使用当前文本日期将该列更新为适当的日期值。

    UPDATE yourTable
    SET new_date = STR_TO_DATE(old_date, '%b %e, %Y');
    

    我的猜测是您使用了错误的格式掩码和/或您的某些文本日期有问题。这是一个简短的演示,表明上述逻辑有效。

    Demo

    【讨论】:

    • 啊。我认为您需要提供所需的格式。您的代码有效。谢谢
    【解决方案2】:

    改用这个。

    UPDATE table_name
    SET DATES =  DATE_FORMAT(DATES, '%Y-%m-%d');
    

    我建议使用另一列来存储更新的日期值。即:update tb_date set new_date_column = DATE_FORMAT(date_column, '%y-%m-%d');

    检查一下,希望它对你有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 2015-10-26
      • 1970-01-01
      • 2017-11-02
      • 2022-06-12
      • 2014-04-27
      • 2023-03-08
      相关资源
      最近更新 更多