首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么可以从日期时间中减去整数,但不能从日期类型中减去

问为什么可以从日期时间中减去整数,但不能从日期类型中减去
EN

Stack Overflow用户
提问于 2013-03-22 20:02:03
回答 2查看 2.3K关注 0票数 7

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

下面的代码执行得很好:

代码语言:javascript
复制
DECLARE @Yesterday DATETIME = GETDATE();
SELECT @Yesterday-1;

如下所示:

代码语言:javascript
复制
DECLARE @Yesterday DATE = GETDATE();
SELECT @Yesterday;

此错误:

代码语言:javascript
复制
DECLARE @Yesterday DATE = GETDATE();
SELECT @Yesterday-1;

我可以安全地从datetime中减去integer类型,但不能从date中减去。

这种行为的原因是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-22 20:09:32

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

和DATETIME2一样,DATE也是从2008年开始出现的,对于这种类型的数字,加减法也是被禁止的。

这会给你一个错误:

代码语言:javascript
复制
DECLARE @Yesterday DATETIME2 = GETDATE();
SELECT @Yesterday-1;

所以一切都很好:)。

票数 7
EN

Stack Overflow用户

发布于 2013-03-22 20:12:54

所以这样可能会更好:

代码语言:javascript
复制
declare @Yesterday DATE = DATEADD(d, -1, getdate())
select @Yesterday
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15569817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档