【问题标题】:MYSQL - Changing year of dates from 2020 to 2011MYSQL - 将日期从 2020 年更改为 2011 年
【发布时间】:2012-01-20 14:41:12
【问题描述】:

我有一堆 YYYY-MM-DD 格式的日期

但我有 2020-MM-DD 的一整年

我想改成2011-MM-DD

我怎样才能做到这一点?

【问题讨论】:

  • 相关列的数据类型是什么?
  • 列的数据类型为日期
  • This 一个更简单的解决方案

标签: mysql datetime date sql-update


【解决方案1】:

我想补充一点(对于问题的更多访问者),您还可以比使用 ADDDATE 函数的 ADDDATE 语句更快地“更新”,我认为更快,而 ADDDATE大约拿了它。 1 小时影响 2.3 万亿行 SUBDATE 缩短了一半时间。

UPDATE Table SET DateTimeField = SUBDATE(DateTimeField, INTERVAL -x YEAR);

其中 x 是您要添加为新年值的负数。 老实说,我忽略了为什么会发生这种情况,但它确实有效。

【讨论】:

    【解决方案2】:

    使用ADDDATE(old_date, INTERVAL -9 YEAR)

    【讨论】:

    • 感谢您的回复。对不起,我打错了我的问题。实际上,我的日期格式为 2020-MM-DD,我想将其转换为 2010-MM-DD。我很抱歉
    • 我已经编辑了我的答案以反映这一点。答案与@Joe Stefanelli 的略有不同,但工作方式相同。
    【解决方案3】:
    UPDATE YourTable 
    SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL 1 YEAR)
    WHERE YourDateColumn >= '2010-01-01'
    AND YourDateColumn <= '2010-12-31'; 
    

    如果您的表格在日期字段上没有索引,您可以解决这个问题:

    UPDATE YourTable 
    SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL 1 YEAR)
    WHERE YEAR(YourDateColumn) = 2010;
    

    要解决 2020 年到 2021 年的日期问题,请运行以下命令:

    UPDATE YourTable 
    SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL -1 YEAR)
    WHERE YEAR(YourDateColumn) = 2021;
    

    顺便说一句,由于我复制了 Joe Stefanelli 的原始代码,为他 +1 !!!

    【讨论】:

      【解决方案4】:
      UPDATE YourTable
          SET YourDateColumn = SUBDATE(YourDateColumn, INTERVAL 9 YEAR);
      

      【讨论】:

      • 非常感谢您的回复。我刚试了一下,它实际上增加了 1 年,即它使我的日期从 2020 年到 2021 年。它们有什么功能可以减少间隔吗?
      • 抱歉,我的问题打错了。实际上,我的日期格式为 2020-MM-DD,我想将其转换为 2010-MM-DD。我很抱歉
      • @ChinmayMurugkar 要从 2020 年到 2011 年,请使用 SUBDATE(YourDateColumn, INTERVAL 9 YEAR) 我已经编辑了答案以反映这一点。
      猜你喜欢
      • 2022-07-20
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多