如何查找两个日期之间的天数

Shm*_*nix 12 sql sql-server

我有一个基本的查询:

SELECT dtCreated
    , bActive
    , dtLastPaymentAttempt
    , dtLastUpdated
    , dtLastVisit
FROM Customers
WHERE (bActive = 'true') 
    AND (dtLastUpdated > CONVERT(DATETIME, '2012-01-0100:00:00', 102))
Run Code Online (Sandbox Code Playgroud)

我想在输出中添加另一列...让我们称之为"差异"以找出'dtcreated'和'dtlastupdated'之间的天数所以例如如果记录1的dtcreated为1/1/11并且dtlastupdated是1/1/12,"差异"列将是"365".

这可以在查询中完成吗?

Tar*_*ryn 29

你会用DATEDIFF:

declare @start datetime
declare @end datetime

set @start = '2011-01-01'
set @end = '2012-01-01'

select DATEDIFF(d, @start, @end)

results = 365
Run Code Online (Sandbox Code Playgroud)

所以对于您的查询:

SELECT dtCreated
    , bActive
    , dtLastPaymentAttempt
    , dtLastUpdated
    , dtLastVisit
    , DATEDIFF(d, dtCreated, dtLastUpdated) as Difference
FROM Customers
WHERE (bActive = 'true') 
    AND (dtLastUpdated > CONVERT(DATETIME, '2012-01-0100:00:00', 102))
Run Code Online (Sandbox Code Playgroud)


For*_* L. 5

要查找两个日期之间的天数,请使用:

DATEDIFF ( d, startdate , enddate )
Run Code Online (Sandbox Code Playgroud)