115

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

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

Ex :

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

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

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

9 回答 9

135

尝试这个

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

或者

SELECT DATEDIFF(DAY,  DATEADD(day, -1, @CreatedDate), GETDATE())
于 2013-03-26T07:59:03.923 回答
47

我不确定你到底想做什么,但我认为这个 SQL 函数会帮助你:

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

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

它会带你回到一天,并适用于任何标准的日期时间或日期格式。

尝试运行此命令,看看它是否为您提供了您正在寻找的内容:

SELECT DATEADD(day,-1,@CreatedDate)
于 2013-06-19T20:36:35.860 回答
39

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

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

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

于 2016-04-06T19:37:03.497 回答
31

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

SELECT GETDATE() - 1

2016-12-25 15:24:50.403
于 2016-12-26T21:26:03.860 回答
8

这应该有效。

select DATEADD(day, -1, convert(date, GETDATE()))
于 2016-08-03T08:19:34.310 回答
1
SELECT DATEDIFF (
    DAY, 
    DATEDIFF(DAY, @CreatedDate, -1), 
    GETDATE())
于 2013-03-26T07:57:52.680 回答
1

试试这个,可能对你有帮助

SELECT DATEDIFF(DAY, DATEADD(DAY,-1,'2013-03-13 00:00:00.000') , GETDATE())
于 2013-03-26T08:05:48.027 回答
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

应该这样做。

于 2015-10-15T09:56:12.627 回答
-3

你可以试试这个。

时间戳=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

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

于 2013-03-26T08:05:57.197 回答