2011-12-14 15 views
10

tarihler yılı değiştirme YYYY-AA-GGMYSQL - 2020'den itibaren ben formatında tarihlerin grup var 2011

Ama tüm yıl 2020-AA-GG

Ben bunu değiştirmek istiyorum var 2011-AA-GG

Bunu nasıl başarabiliriz?

+0

söz konusu sütunun veri türü nedir? Sütunun –

+0

Veri türü tarih – Chinmay

+0

olduğunu [Bu] (http://stackoverflow.com/questions/14491906/changing-year-in-mysql-date) Bir basit bir çözüm cevap için –

cevap

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

Cevabınız için çok teşekkür ederim. Sadece denedim ve aslında 1 yıl ekledim, yani 2020'den 2021'e kadar tarihimi yaptım. Aralarındaki herhangi bir fonksiyon aralığını azaltmak mı? – Chinmay

+0

Üzgünüz, sorumu yanlış yazmıştım. Aslında benim tarihlerim 2020-AA-GG biçimindedir ve bunu 2010-AA-GG'ye dönüştürmek istiyorum. Çok üzgünüm – Chinmay

+1

@ChinmayMurugkar 2020'den itibaren 2011'e kadar gitmek için ben 'SUBDATE (YourDateColumn, ARALIĞI 9 YIL) kullanan' Bunu yansıtmak cevabını kaydetmiştiniz. –

5

masanız aşağı tarih alanında bulunan bir dizin yok ise ADDDATE(old_date, INTERVAL -9 YEAR)

+0

teşekkürler olduğunu. Üzgünüm sorumu yanlış yazmıştım. Aslında benim tarihlerim 2020-AA-GG biçimindedir ve bunu 2010-AA-GG'ye dönüştürmek istiyorum. Çok üzgünüm – Chinmay

+0

Bunu yanıtlamak için cevabımı düzenledim. Cevap, @Joe Stefanelli'den biraz farklı, ama aynı şekilde çalışıyor. – Jason

2
UPDATE YourTable 
SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL 1 YEAR) 
WHERE YourDateColumn >= '2010-01-01' 
AND YourDateColumn <= '2010-12-31'; 

KULLANIMI, bu birlikte kaçmak:

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

2020 ile tarih sorunu gidermek için

UPDATE YourTable 
SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL -1 YEAR) 
WHERE YEAR(YourDateColumn) = 2021; 
: 2021 vadede bu gidiş Onun için Joe Stefanelli orijinal kod, 1 kopyalanan BTW yana

!!!

1

Ben de "güncelleme" olumlu daha hızlı SUBDATE fonksiyonu ile ifadeye göre, ben aprox aldı ederken, makul hızlıdır düşünebiliriz ki (sorusuna başka ziyaretçiler için) eklemek istiyorum. 2.3 trilyon sıralarını etkilemek için 1 saat SUBDATE bunu yarıya düşürdü. x yılbaşı değeri olarak eklemek istediğiniz negatif sayıdır

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

. Dürüst olmak gerekirse, bunun neden olduğunu görmezden geliyorum ama işe yarıyor.