2011-12-14 7 views
10

Mam kilka dat w formacie YYYY-MM-DDMYSQL - Zmiana rok dat od 2020 do 2011

Ale mam cały rok w 2020-MM-DD

chcę go zmienić na 2011-MM-DD

Jak mogę to osiągnąć?

+0

Jaki jest typ danych kolumny? –

+0

Typ danych kolumny to data – Chinmay

+0

[This] (http://stackoverflow.com/questions/14491906/change-year-in-mysql-date) jedno jest prostsze rozwiązanie –

Odpowiedz

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

Dziękuję bardzo za odpowiedź. Właśnie wypróbowałem to i to faktycznie dodało 1 do roku tj. To zrobiło moją datę od 2020 do 2021. Czy ich żadna funkcja by zmniejszyć przedział? – Chinmay

+0

Niestety błędnie wpisano moje pytanie. Właściwie to moje daty mają format 2020-MM-DD i chcę go przekonwertować na rok 2010-MM-DD. Bardzo przepraszam – Chinmay

+1

@ChinmayMurugkar Aby przejść od 2020 do 2011, użyj 'SUBDATE (YourDateColumn, INTERVAL 9 YEAR)' Redagowałem odpowiedź, aby to odzwierciedlić. –

5

USE ADDDATE(old_date, INTERVAL -9 YEAR)

+0

Dzięki za odpowiedź. Niestety błędnie wpisano moje pytanie. Właściwie to moje daty mają format 2020-MM-DD i chcę go przekonwertować na rok 2010-MM-DD. Tak mi przykro, – Chinmay

+0

Edytowałem swoją odpowiedź, aby to odzwierciedlić. Odpowiedź jest nieco inna niż @Joe Stefanelli, ale działa w ten sam sposób. – Jason

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

Jeśli tabela w dół nie ma indeks na polu daty, można uciec z tego:

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

Aby ustalić datę problem z 2020 roku przejście do roku 2021:

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

BTW Odkąd skopiowałem oryginalny kod Joe Stefanelli, +1 dla niego !!!

1

Chciałbym dodać (dla kolejnych gości na pytanie), które można także „update” pozytywnie szybciej niż z rachunku z funkcją SUBDATE, myślę, że jest dość szybciej, a do wziął go ok. 1 godzina na wpłynięcie 2,3 trylionów wierszy SUBDATE zrobiła to przez połowę czasu.

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

Gdzie x to liczba ujemna, którą chcesz dodać jako wartość nowego roku. Szczerze mówiąc, ignoruję, dlaczego tak się dzieje, ale działa.