0

为了学习,我一直在写一些关于 SQL Server 的查询。

我想知道如何在 SQL 查询中获得今天与 90 天前的差异?

4

4 回答 4

2
DATEDIFF

http://msdn.microsoft.com/en-us/library/ms189794.aspx

DECLARE @90DaysAgo datetime
        ,@Today datetime

SET @90DaysAgo = DATEADD(d, -90, GETDATE())
SET @Today = GETDATE()

SELECT DATEDIFF(d, @90DaysAgo, @Today) --Returns 90
于 2011-08-18T14:50:13.820 回答
2

您想要DATEADD,而不是 DATEDIFF,您需要决定是否需要 90 天前:

SELECT DATEADD(day,-90,CURRENT_TIMESTAMP)

或 3 个月前:

SELECT DATEADD(month,-3,CURRENT_TIMESTAMP)
于 2011-08-18T14:53:46.760 回答
0

试试这个来返回正好 90 年前的日期和时间:

SELECT GETDATE()-90

输出:

-----------------------
2011-05-20 10:55:12.360

(1 row(s) affected)

这将为您提供仅 90 天前的日期,时间为 00:00:00.000:

SELECT DATEADD(day,DATEDIFF(day,0,GETDATE()),-90)

输出:

-----------------------
2011-05-20 00:00:00.000

(1 row(s) affected)
于 2011-08-18T14:53:16.330 回答
0

这将在 3 个月前(不是 90 天前)正确地四舍五入到午夜,这似乎是您想要的(08-18 -> 05-18 是 92 天,因为那里有两个 31 日)。

...
WHERE column >= DATEADD(MONTH, -3, 
    DATEADD(DAY, DATEDIFF(DAY, '20000101', CURRENT_TIMESTAMP), '20000101'));
于 2011-08-18T14:58:10.850 回答