从日期时间减去一天


102

我有一个查询来获取2 datetime之间的日期差异为:

SELECT DATEDIFF(DAY, @CreatedDate , GETDATE())

Ex :

SELECT DATEDIFF(DAY, '2013-03-13 00:00:00.000' , GETDATE())

我需要有这样的查询工作,它将从创建的日期中减去一天:

SELECT DATEDIFF(DAY, **@CreatedDate- 1** , GETDATE())

1
为什么不将结果加1?
Damien_The_Unbeliever 2013年

如果从结果中减去 1得到期望的答案,那么您提出的问题似乎是错误的,因为从结果中减去等同于在日期的较早日期中加上几天。
Damien_The_Unbeliever 2013年

然后,您在第一个回复中发布的表达方式就是我要使用的表达方式-您可以将其发布为答案,但是正如我所说,这意味着您的问题并不正确(今天与今天DATEDIFF之间2003-03-12是14 ,而不是12)。
Damien_The_Unbeliever

是的..您是对的..其工作原理与结果相反。–
James

Answers:


124

试试这个

SELECT DATEDIFF(DAY,  DATEADD(day, -1, '2013-03-13 00:00:00.000'), GETDATE())

要么

SELECT DATEDIFF(DAY,  DATEADD(day, -1, @CreatedDate), GETDATE())

3
按照Philip Rego的回答,您可以使用SELECT GETDATE()-1从日期中减去天。
何塞·巴博萨

44

我不确定您要做什么,但是我认为此SQL函数可以为您提供帮助:

SELECT DATEADD(day,-1,'2013-04-01 16:25:00.250')

以上将给你2013-03-31 16:25:00.250

它可以让您精确地回到一天,并且可以使用任何标准的日期时间或日期格式。

尝试运行此命令,看看它是否能满足您的需求:

SELECT DATEADD(day,-1,@CreatedDate)

33

要简单地从今天的日期减去一天:

Select DATEADD(day,-1,GETDATE())

(原始帖子使用-7,不正确)


24

显然,您可以从日期时间中减去所需的天数。

SELECT GETDATE() - 1

2016-12-25 15:24:50.403




1

老实说,我只使用:

select convert(nvarchar(max), GETDATE(), 112)

从中YYYYMMDD减去一。

或更正确

select convert(nvarchar(max), GETDATE(), 112) - 1 

昨天的日期。

替换Getdate()为您的价值OrderDate

select convert(nvarchar (max),OrderDate,112)-1 AS SubtractDate FROM Orders

应该这样做。


-1

你可以试试看

Timestamp = 2008-11-11 13:23:44.657;

SELECT DATE_SUB(OrderDate,INTERVAL 1 DAY) AS SubtractDate FROM Orders

输出:2008-11-10 13:23:44.657

我希望这将有助于解决您的问题。


2
SQL Server。不支持INTERVALDATE_SUB
Damien_The_Unbeliever

从订单中选择SELECT DATEADD(day,45,OrderDate)。你说对了?
chintan 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.