7

DATETIME & INTEGER 和 DATE & INTEGER 的关系是否一致?

这执行得很好:

DECLARE @Yesterday DATETIME = GETDATE();
SELECT @Yesterday-1;

就像这样:

DECLARE @Yesterday DATE = GETDATE();
SELECT @Yesterday;

这个错误:

DECLARE @Yesterday DATE = GETDATE();
SELECT @Yesterday-1;

我可以安全地从 a 中减去一个integer类型,datetime但不能从 a中减去date
这种行为的原因是什么?

4

2 回答 2

7

实际上,它是非常一致的。DATETIME是从以前版本的 sql server 继承的类型。自 2008 版以来,DATETIME2已引入,并删除了加/减整数的可能性。您仍然可以将其DATETIME作为遗产。

DATE,就像DATETIME2自 2008 年以来一直存在的一样,对于这种类型的加/减数字也被禁止。

这会给你一个错误:

DECLARE @Yesterday DATETIME2 = GETDATE();
SELECT @Yesterday-1;

所以一切都很好:)。

于 2013-03-22T12:09:31.687 回答
1

所以这可能会更好:

declare @Yesterday DATE = DATEADD(d, -1, getdate())
select @Yesterday
于 2013-03-22T12:12:53.543 回答