Sql server 2005 如何在update语句中减去并更新日期列?

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

如何更新update语句中现有的DateTime列? 我想减去一天,但我收到一条错误消息,说我不能在更新中使用DateAdd(关于溢出的内容)

我提出了这个查询,但它当然不会执行

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
?那只是打字错误吗?