2009-06-04 69 views
17

我想在表中的每一行中添加一年到日期時間類型的列。使用UPDATE語句添加數字類型很容易。例如:如何使用SQL UPDATE語句將1年添加到DATETIME列中?

UPDATE TABLE SET NUMBERCOLUMN = NUMBERCOLUMN + 1 

我希望做同樣的事情用一個DATETIME型...

UPDATE Procrastination SET DropDeadDueDate = DropDeadDueDate + ? 

...但我不知道用什麼樣的價值。我可以使用的數字值是否意味着「1年」?或者在SQL Server中是否有DATEADD函數或類似函數?

另一個問題

我想不一個領域做到這一點,但對於數據類型「的日期時間」的數據庫中的每個領域。有沒有簡單的方法來選擇類型'日期時間'的所有領域,並執行增加x年的更新?我是新來的sql所以請溫柔...

+1

@shahkalpesh - 也許我應該有。我毫不懷疑我能*自己找到答案。但是由於StackOverflow似乎渴望成爲所有編程知識的存儲庫,並且這個問題還沒有被問到,我想「爲什麼不呢?」。 – 2009-06-04 20:47:57

+3

@Joshua,在我的回答下看到我對Kev的評論。當我看到你的問題時,似乎你已經回答說,部分地說DATEADD。如果有人提出問題,他們可以在網上很容易地找到書 - 這將成爲鏈接交換,而不是真正的問題/解決方案 - 在MSDN /圖書在線/互聯網上無法找到。只是我的意見,沒有任何個人。和平:) – shahkalpesh 2009-06-04 23:29:15

回答

36

有其實是在T-SQL中DATEADD語句,你可以找到它here

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

編輯:你可以使用yyyyyy DATEADD的第一個參數。

+4

..今天幸運的「最快的打字員容易代表」比賽是... – gbn 2009-06-04 17:41:29

+0

我想在phpmyadmin做同樣的事情,但它說'#1305 - 功能[table_name] .ADD_DATE不存在' – someone 2015-01-04 11:49:57

3

DateAdd函數應該做你想要什麼。

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

它可以用這樣的DATEADD()函數來完成:

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