两个日期之间的差异

时间:2011-08-18 14:46:56

标签: sql sql-server sql-server-2005 sql-server-2008 date-arithmetic

我一直在写一些关于SQL Server的问题,以便学习。

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

SELECT DATEADD(day,-90,CURRENT_TIMESTAMP)

或3个月前:

SELECT DATEADD(month,-3,CURRENT_TIMESTAMP)

答案 2 :(得分: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)

答案 3 :(得分:0)

这将在3个月之前(不是90天前)正确到圆形正午,这似乎是你想要的(08-18 - > 05-18是92天,因为那里有两个31位)。

...
WHERE column >= DATEADD(MONTH, -3, 
    DATEADD(DAY, DATEDIFF(DAY, '20000101', CURRENT_TIMESTAMP), '20000101'));