TSQL检索当前月/年的所有记录

时间:2012-12-05 16:27:05

标签: sql-server tsql datetime

我有一个名为DateFinished的日期时间字段。我需要能够检索DateFinished在当前月/年内的所有记录。

2 个答案:

答案 0 :(得分:19)

如果你只有少量的行,那么这样做就可以获得DateFinished今年这个月的所有行。

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

虽然这可能会在很多行上变得非常慢 - 在这种情况下使用DateAddDatePartBETWEEN可能更合适,并且可以利用索引(I没有时间写一个涉及现在的答案!)

答案 1 :(得分:11)

作为替代方案 - 这应该使用DateFinished上的索引。

SELECT * 
FROM MyTable
WHERE DateFinished BETWEEN 
     DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
     AND 
     DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) + 1, 0)