我有一个名为DateFinished时间字段。 我需要能够检索的所有记录,其中DateFinished是当前月/年以内。
Answer 1:
如果你只得到了一小行,这会做让所有行DateFinished
是在本月今年。
SELECT *
FROM MyTable
WHERE Year(DateFinished) = Year(CURRENT_TIMESTAMP)
AND Month(DateFinished) = Month(CURRENT_TIMESTAMP)
这有可能会在大量的行相当缓慢,但-在使用这种情况下DateAdd
, DatePart
和BETWEEN
可能是比较合适的,并且可以利用索引(我没有时间来写,现在涉及这些权利的答案!)
Answer 2:
正如一个选择 - 这应该使用在DateFinished的索引。
SELECT *
FROM MyTable
WHERE DateFinished BETWEEN
DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
AND
DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) + 1, 0)
文章来源: TSQL retrieve all records in current month/year