DATETIME&整数和日期& INTEGER一致吗?
执行得很好:
DECLARE @Yesterday DATETIME = GETDATE();
SELECT @Yesterday-1;
就像这样:
DECLARE @Yesterday DATE = GETDATE();
SELECT @Yesterday;
此错误:
DECLARE @Yesterday DATE = GETDATE();
SELECT @Yesterday-1;
我可以安全地从integer
中减去datetime
类型,但不能从date
减去。{
这种行为的原因是什么?
答案 0 :(得分:7)
实际上,它非常一致。 DATETIME
是从先前版本的sql server继承的类型。自2008年版以来,引入了DATETIME2
,并且删除了添加/减去整数的可能性。您仍然可以在DATETIME
上将其作为遗产。
DATE
,与DATETIME2
一样,自2008年以来一直存在,对于此类型,也禁止添加/减少数字。
这会给您一个错误:
DECLARE @Yesterday DATETIME2 = GETDATE();
SELECT @Yesterday-1;
所以一切都很好:)。
答案 1 :(得分:1)
所以这可能会更好:
declare @Yesterday DATE = DATEADD(d, -1, getdate())
select @Yesterday