0

私はこれが私の以下のクエリを拡張することに少し困惑しました。以下のクエリが機能し、必要なすべての行が表示されます。

select (e.Firstname+' '+ e.lastname) as ApprovedBy
    , wd.TargetDate
    ,wd.ACTDate
    ,wd.UploadDate
    ,wd.ApproveDate 
From Approved wd 
JOIN Employee e 
    on EmployeeID = wd.ApproveDateId 
where wd.ApproveDate Between '4/2/2012 14:30:00.000' and '4/30/2012 23:00:59.000'
order by ApproveDate 

今、私はこれを日付範囲に入れなければなりませんか?私が必要としているのは、「4/2/2012 14:30:00.000」よりも大きいが、4/2/2012と「4/30/2012の間」のすべての行を取得する方法に関する指示です。日付範囲の時間が14:30:00.000より大きい行が必要ですか?

ありがとう

4

2 に答える 2

1

DATE範囲(つまり時間なし)が必要で、次に時間を含む2番目の条件が必要であると仮定すると、次のように実行できます(SQL 2008+)。

SELECT  ( e.Firstname + ' ' + e.lastname ) AS ApprovedBy ,
        wd.TargetDate ,
        wd.ACTDate ,
        wd.UploadDate ,
        wd.ApproveDate
FROM    Approved wd
        JOIN Employee e ON EmployeeID = wd.ApproveDateId
WHERE   CONVERT(DATE, wd.ApproveDate) BETWEEN CONVERT(DATE, '4/2/2012', 101)
                                      AND     CONVERT(DATE, '4/30/2012', 101)
        AND wd.ApproveDate > CONVERT(DATETIME, '4/2/2012 14:30:00.000', 101)
ORDER BY ApproveDate  

時間が長いすべての日(範囲内)が必要な場合は、上記の2番目の条件を次のように置き換えます。

AND CONVERT(TIME(0), wd.ApproveDate) > CONVERT(TIME(0), '14:30:00')
于 2012-04-26T13:27:24.810 に答える
0

形式は次のようになります

'YYYY-MM-DD HH:MM:SS'

したがって、2012年4月2日は

'2012-04-02 14:30'.

BETWEENを使用して、このような日付を比較できます。

于 2012-04-26T13:26:38.250 に答える