[英]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.