2012-04-30 9 views
14

Ich habe eine Liste von Geburtstagen und das Jahr ist der einzige Teil, der falsch ist. Ich habe eine Liste von ID # für diese Personen. Gibt es eine Möglichkeit, nur das Jahr für alle diese Leute zu ändern? Ich dachte etwas wie eine Tabelle der Abfrageergebnisse und dann mit einer UPDATESET Abfrage, aber ich weiß nicht, wie man nur das Jahr ändert.Wie ändere ich nur das Jahr eines Datums Datentyp

enter image description here

Probe enthalten in Bearbeitung. Jedes Jahr muss von 2.

+1

Sind sie jeweils nach einer bestimmten Anzahl von Jahren aus? Wenn nicht, woher wissen Sie, was der neue Wert ist? – zimdanen

+0

Warum haben Sie das Format JJJJ-MM-TT angegeben? Ist Ihr Feld zufällig in Varchar gespeichert? –

+0

Es wäre hilfreich, wenn Sie Ihre Tabellenstruktur und ein paar Beispiele für falsche Daten zeigen und wissen, wie Sie diese korrigieren können. –

Antwort

30

reduziert werden, wenn alle Zeilen um zwei Jahre verringert werden müssen, dann gilt:

UPDATE dbo.TableToUpdate 
    SET [Date Column] = DATEADD(YEAR, -2, [Date Column]); 
+0

Können Sie das bitte etwas erklären? Ich nehme an, das [fix] ist das richtige, Jahr? – wootscootinboogie

+0

Ich habe keine Ahnung, Sie müssen uns sagen, wie Sie wissen, was jedes Datum zu korrigieren ist. Sie sagen, es ist falsch, aber wo ist die richtige Quelle? –

+0

Nein, ich habe nicht gesagt, es ist falsch, nur für eine kleine Klarstellung im Jargon :) z. src.id (is myTable.id) – wootscootinboogie

20

Hier ist die kürzest ich denken kann, um das Jahr 2050 ändern:

select 
    dateadd(year, (2050 - year(d)), d)    
from x 

Beispieldaten:

create table x(d date); 

insert into x values 
('2001-11-19'), 
('2020-07-05'), 
('2012-05-01'); 

Ausgang:

COLUMN_0 
2050-11-19 
2050-07-05 
2050-05-01 

Live-Test: http://www.sqlfiddle.com/#!3/9a8b4/2

+0

Aber das ist nicht die Anfrage. –

+1

Das ist die Anfrage, ändern Sie nur das Jahr –

+0

Wenn die Datenbank nur ein bisschen objektorientiert ist, können wir dies tun: 'UPDATE x SET d.Year = 2050'. Kann nur träumen :-) –

4

Falls jemand anderes es für MySQL benötigt, hier ist die Syntax:

UPDATE dbo.TableToUpdate SET [Datum Spalte] = DATE_ADD ([Datum Spalte], INTERVAL -2 JAHR);

Verwandte Themen