2009-06-04 4 views
17

Ich möchte 1 Jahr zu einer Datetime-Spalte in jeder einzelnen Zeile in einer Tabelle hinzufügen. Das Hinzufügen mit einer UPDATE-Anweisung ist für numerische Typen einfach. ex:Wie kann ich eine SQL UPDATE-Anweisung verwenden, um 1 Jahr zu einer DATETIME-Spalte hinzuzufügen?

UPDATE TABLE SET NUMBERCOLUMN = NUMBERCOLUMN + 1 

I ...

das Gleiche mit einem DATETIME--Typ tun möchte
UPDATE Procrastination SET DropDeadDueDate = DropDeadDueDate + ? 

... aber ich bin mir nicht sicher, welcher Wert zu verwenden. Gibt es einen numerischen Wert, den ich verwenden könnte, bedeutet das "1 Jahr"? Oder gibt es eine DATEADD-Funktion oder ähnliches in SQL Server?

Zusatzfrage

Ich mag würde dies für nicht ein Feld tun, aber für jedes Feld in der Datenbank des Datentyps ‚Datetime‘. Gibt es eine einfache Möglichkeit, alle Felder vom Typ 'datetime' auszuwählen und eine Aktualisierung des Hinzufügens von x Anzahl von Jahren durchzuführen? Ich bin so auf SQL bitte sanft sein ...

+1

@shahkalpesh - Vielleicht sollte ich habe. Ich habe keinen Zweifel, dass ich die Antwort selbst gefunden haben könnte. Aber da StackOverflow scheinbar darauf abzielt, ein Repository für alle Programmierkenntnisse zu sein, und diese Frage noch nicht gestellt wurde, dachte ich "Warum nicht?". –

+3

@Joshua, siehe meinen Kommentar zu Kev unter meiner Antwort. Wenn ich Ihre Frage anschaue, scheint es, dass Sie das bereits zum Teil mit DATEADD beantwortet haben. Wenn Leute Fragen stellen, könnten sie leicht in Büchern online finden - dies wird zu einem Linkaustausch statt zu echten Problemen/Lösungen, die man nicht in MSDN/Books online/internet finden kann. Nur meine Meinung, nichts Persönliches. Peace :) – shahkalpesh

Antwort

36

Es ist in der Tat eine Aussage DATEADD in T-SQL, können Sie finden es here

UPDATE Procrastination SET DropDeadDueDate = DATEADD(yyyy,1,DropDeadDueDate) 

EDIT: Sie Jahre, verwenden könnte yy oder yyyy für das erste Argument von DATEADD.

+4

..und today0s Glück "schnellste Schreibkraft easy rep" Wettbewerb ist ... – gbn

+0

Ich möchte die gleiche Sache in phpmyadmin tun, aber es sagt '# 1305 - FUNCTION [Tabellenname] .ADD_DATE existiert nicht' – someone

1

UPDATE Procrastination SET DropDeadDueDate =
DATEADD(yy, 1, DropDeadDueDate)

ref: http://doc.ddart.net/mssql/sql70/da-db_5.htm

+0

während der Link ist nützlich, wäre ein neuerer MSDN-Link nicht hilfreicher als ein SQL7-Link gewesen? Der einzige Grund, warum ich frage, ist, dass Sie das OP dafür kritisiert haben, die Antwort selbst nicht zu erforschen? –

+0

@Kev: Ich kritisiere nicht :) Ja, der Link ist älter, aber die Dinge haben sich für diese Funktion nicht geändert, soweit ich weiß. Meine Idee ist, dass Fragen/Antworten für Dinge sein sollten, die man in der Dokumentation/MSDN nicht leicht finden würde.Hoffe das rechtfertigt meine Kommentare. – shahkalpesh

3

Die DateAdd Funktion sollte das tun, was Sie wollen.

UPDATE Procrastination SET DropDeadDueDate = DateAdd(yy, 1, DropDeadDueDate) 
8

Es könnte mit einem DATEADD() Funktion wie folgt erfolgen:

UPDATE Procrastination SET DropDeadDueDate = DATEADD(yy, 1, DropDeadDueDate) 
Verwandte Themen