11

DateFinished という日時フィールドがあります。DateFinished が現在の月/年内にあるすべてのレコードを取得できる必要があります。

4

3 に答える 3

20

行の数が少ない場合DateFinishedは、これで今年の今月のすべての行を取得できます。

SELECT * 
FROM MyTable
WHERE Year(DateFinished) = Year(CURRENT_TIMESTAMP) 
                 AND Month(DateFinished) = Month(CURRENT_TIMESTAMP)

DateAddただし、これは多数の行で非常に遅くなる可能性がDatePartありBETWEENます.

于 2012-12-05T16:29:51.217 に答える
13

代わりに、DateFinished のインデックスを使用する必要があります。

SELECT * 
FROM MyTable
WHERE DateFinished BETWEEN 
     DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
     AND 
     DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) + 1, 0)
于 2012-12-05T17:27:33.663 に答える