2015-08-20 53 views
1
update calendar 
set duedate = DATEADD(mm,1,duedate) 
from calendar as t1 
inner join events as t2 
on t1.person = t2.[person] 
where t2.catastrophy ='FamilyDeath' 

如果存在家庭死亡,我想推遲duedate一個月。使用dateadd更改格式的sql server更新

我的日期的格式爲04/30/2015。我運行上面的查詢,它將採取日期並將其更改爲201年5月30日。如果我嘗試再次運行它,我得到一個錯誤,指出:

「將varchar數據類型轉換爲日期時間數據類型導致超出範圍的值。「

+0

「duedate」列的數據類型是什麼? –

+0

的數據類型是char(10) – lefeal

回答

1

我想因爲類型是char(10),所以你得到了一個你不想要的轉換。您正在將CHAR轉換爲datetime,然後將其存儲爲CHAR。當你這樣做的DATEADD,嘗試把它放回正確的CHAR格式是這樣的:

set duedate = convert(char(10),dateadd(mm,1,dueDate),101) 

CONVERT允許您指定格式,101是 「MM/DD/YYYY」

https://msdn.microsoft.com/en-us/library/ms187928.aspx