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数据类型转换为日期时间数据类型会导致超出范围的值。"
答案 0 :(得分:1)
我认为因为类型是char(10),所以你得到了一个你不想要的转换。您将从CHAR转换为datetime,然后将其存储为CHAR。当你执行dateadd时,请尝试将其重新置于正确的CHAR格式中,如下所示:
set duedate = convert(char(10),dateadd(mm,1,dueDate),101)
CONVERT允许您指定格式,101是“mm / dd / yyyy”