Sql server 2005 如何在update语句中减去并更新日期列?
如何更新update语句中现有的DateTime列? 我想减去一天,但我收到一条错误消息,说我不能在更新中使用DateAdd(关于溢出的内容) 我提出了这个查询,但它当然不会执行Sql server 2005 如何在update语句中减去并更新日期列?,sql-server-2005,tsql,Sql Server 2005,Tsql,如何更新update语句中现有的DateTime列? 我想减去一天,但我收到一条错误消息,说我不能在更新中使用DateAdd(关于溢出的内容) 我提出了这个查询,但它当然不会执行 begin tran upd update answer set SentForApprovalAt = DateAdd(day, -1, approvedAt) where approvedAt > '1753-01-01' and approvedAt < modified
begin tran upd
update answer
set SentForApprovalAt = DateAdd(day, -1, approvedAt)
where
approvedAt > '1753-01-01'
and approvedAt < modifiedAt
commit tran upd
开始传输upd
更新答案
设置SentForApprovalAt=DateAdd(第-1天,批准日期)
哪里
批准日期>'1753-01-01'
并在
我该怎么办?您收到此错误的原因可能是因为您尝试从中减去1的日期导致结果值小于 使用以下测试用例:
CREATE TABLE answer
(
SentForApprovalAt DATETIME NULL,
ApprovedAT DATETIME,
ModifiedAT DATETIME
)
/* The query will work for this record */
INSERT
INTO Answer
(sentforapprovalat, approvedat, modifiedat)
VALUES (null, '1800-01-01 00:00:00.000', GETDATE())
/* The query will error with 'Adding a value to a 'datetime' column
caused an overflow.' for this record */
INSERT
INTO Answer
(sentforapprovalat, approvedat, modifiedat)
VALUES (null, '1753-01-01 01:00:00.000', GETDATE())
为什么不在“17530102”处批准
,这样您就不会在日期时间边界之前到达
不要使用'1753-01-02'
,因为它可以被解释为应该批准在和修改在是@approvedAt
和@modifiedAt
?那只是打字错误吗?