17

基本的なクエリがあります:

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

出力に別の列を追加したい...「差」と呼んで、「dtcreated」と「dtlastupdated」の間の日数を調べます。たとえば、レコード 1 の dtcreated が 1/1/11 で dtlastupdated の場合1/1/12 の場合、「差」列は「365」になります。

これはクエリで実現できますか?

4

10 に答える 10

40

使用しますDATEDIFF

declare @start datetime
declare @end datetime

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

select DATEDIFF(d, @start, @end)

results = 365

あなたのクエリのために:

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))
于 2012-07-10T17:20:13.847 に答える
9

2つの日付の間の日数を見つけるには、次を使用します。

DATEDIFF ( d, startdate , enddate )
于 2012-07-10T17:20:09.167 に答える
2

以下のように、DATE_DIFF 関数を使用してこの値を提供します。

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

編集:MySQLを使用している場合は、「d」を省略して、

DATEDIFF(dtLastUpdated, dtCreated) AS Difference
于 2012-07-10T17:21:11.007 に答える
1

MySQL を使用している場合、2 つの日付間の日数を計算する DATEDIFF 関数があります。

SELECT dtCreated
    , bActive
    , dtLastPaymentAttempt
    , dtLastUpdated
    , dtLastVisit
    , DATEDIFF(dtLastUpdated, dtCreated) as Difference
FROM Customers
WHERE (bActive = 'true') 
    AND (dtLastUpdated > CONVERT(DATETIME, '2012-01-0100:00:00', 102))
于 2012-07-10T17:23:05.533 に答える
0
DECLARE @Firstdate DATE='2016-04-01',
 @LastDate DATE=GETDATE(),/*get today date*/
 @resultDay int=null

SET @resultDay=(SELECT DATEDIFF(d, @Firstdate, @LastDate))
PRINT @resultDay
于 2019-05-28T09:47:50.903 に答える