两个日期之间的差异

问题描述:

我一直在写一些关于SQL Server的查询来学习。两个日期之间的差异

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

+3

查找DATEDIFF():http://msdn.microsoft.com/en-us/library/ms189794.aspx –

+1

以分,秒,是什么? – 2011-08-18 14:48:29

+2

今天和90天前的区别?我相当肯定这是一个常数(忽略DST变化,闰秒等):-) –

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 

试试这个返回的日期和时间整整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) 

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

SELECT DATEADD(day,-90,CURRENT_TIMESTAMP) 

或3个月前:

SELECT DATEADD(month,-3,CURRENT_TIMESTAMP) 
+0

谢谢:),我明白了。 谢谢你保镖 谢谢Damien_The_Unbeliever – csharper

+0

@Aaron Bertrand:好点 - 并不意味着仓促,只是看到OP是相当新的,还没有接受答案,所以我想指出这是礼貌和正确要做的事。 –

这将在3个月前(不是90天前)当天的午夜正确地轮到,这似乎是你想要的(08-18 - > 05-18是92天后有两个31秒)。

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