sql 服务器更新,dateadd 更改格式

sql server update with dateadd changing format

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 日。如果我再次尝试 运行 它,我会收到一条错误消息:

"The conversion of a varchar data type to a datetime data type resulted in an out-of-range value."

我认为因为类型是 char(10),所以您得到了不想要的转换。您正在从 CHAR 转换为日期时间,然后将其存储为 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