DATETIME & INTEGER和DATE & INTEGER之间的关系是否一致?
下面的代码执行得很好:
DECLARE @Yesterday DATETIME = GETDATE();
SELECT @Yesterday-1;如下所示:
DECLARE @Yesterday DATE = GETDATE();
SELECT @Yesterday;此错误:
DECLARE @Yesterday DATE = GETDATE();
SELECT @Yesterday-1;我可以安全地从datetime中减去integer类型,但不能从date中减去。
这种行为的原因是什么?
发布于 2013-03-22 20:09:32
实际上,这是非常一致的。DATETIME是从sql server的早期版本继承的类型。自2008版本以来,引入了DATETIME2,并删除了加/减整数的可能性。您仍然可以在DATETIME上将其作为遗留项目。
和DATETIME2一样,DATE也是从2008年开始出现的,对于这种类型的数字,加减法也是被禁止的。
这会给你一个错误:
DECLARE @Yesterday DATETIME2 = GETDATE();
SELECT @Yesterday-1;所以一切都很好:)。
发布于 2013-03-22 20:12:54
所以这样可能会更好:
declare @Yesterday DATE = DATEADD(d, -1, getdate())
select @Yesterdayhttps://stackoverflow.com/questions/15569817
复制相似问题