繁体   English   中英

两个日期之间的差异

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM