如何更新更新语句中的现有DateTime列? 我想减去一天但是我收到一条错误消息,说我不能在更新中使用DateAdd(有关溢出的内容)。
我想出了这个查询,但当然不会执行。
begin tran upd
update answer
set SentForApprovalAt = DateAdd(day, -1, approvedAt)
where
approvedAt > '1753-01-01'
and approvedAt < modifiedAt
commit tran upd
我该怎么办?
答案 0 :(得分:4)
您收到此错误的原因可能是因为您尝试从中减去1的日期导致结果值小于minimum value for a TSQL datetime。
使用以下测试用例:
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())
答案 1 :(得分:0)
为什么不approvedAt > '17530102'
所以你不要去日期时间边界
请勿使用'1753-01-02'
,因为它可以解释为2nd Feb 1753 for UK english and other settings