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"
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"