2011-12-14 79 views
10

我有一堆格式的日期YYYY-MM-DDMYSQL - 更改日期的一年二○二○年至2011年

但我都一年2020-MM-DD

我想将其更改为2011-MM-DD

我该如何做到这一点?

+0

有问题的列的数据类型是什么? – 2011-12-14 20:12:22

+0

列的数据类型为日期 – Chinmay 2011-12-14 20:15:05

+0

[This](http://stackoverflow.com/questions/14491906/changing-year-in-mysql-date)一个更简单的解决方案 – 2015-11-18 10:45:25

回答

13
UPDATE YourTable 
    SET YourDateColumn = SUBDATE(YourDateColumn, INTERVAL 9 YEAR); 
5

使用ADDDATE(old_date, INTERVAL -9 YEAR)

2
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!

1

我想补充(更多游客到问题),您还可以在“更新”肯定比声明与SUBDATE功能更快,我认为是合理的速度更快,而以把它aprox的。 1小时影响2.3万亿行SUBDATE使它成为一半的时间。

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

其中x是您想添加为新年值的负数。 老实说,我忽略了为什么发生这种情况,但它的工作原理。