[英]The difference between two dates
為了學習,我一直在寫一些有關SQL Server的查詢。
我想知道如何在SQL查詢中獲得90天前的今天差異?
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
您需要DATEADD而不是DATEDIFF,並且需要確定是否需要90天:
SELECT DATEADD(day,-90,CURRENT_TIMESTAMP)
或3個月前:
SELECT DATEADD(month,-3,CURRENT_TIMESTAMP)
嘗試使用此方法返回確切的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個月前(不是90天前)的那一天的午夜,這似乎是您想要的(08-18-> 05-18是92天,因為那里有兩個31st)。
...
WHERE column >= DATEADD(MONTH, -3,
DATEADD(DAY, DATEDIFF(DAY, '20000101', CURRENT_TIMESTAMP), '20000101'));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.