使用dateadd更改格式的SQL Server更新

时间:2015-08-20 19:30:43

标签: sql-server dateadd

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推迟一个月。

我的日期格式为04/30/2015。我运行上面的查询,它将采取日期并将其更改为201年5月30日。如果我尝试再次运行它,我收到一个错误说明:

  

"将varchar数据类型转换为日期时间数据类型会导致超出范围的值。"

1 个答案:

答案 0 :(得分: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