T-SQL选择月份的记录

时间:2011-07-14 22:30:13

标签: sql sql-server tsql sql-server-2008

我有一个名为logD的表,其中包含一个名为date的字段(日期字段类型)。格式为“年 - 月 - 日”IE:2011-04-11

如果今天的日期是2011-07-31,我想要7月份的所有记录。如果今天的日期是2011-02-14,我想要2月份的所有记录,依此类推。

我正在使用SQL 2008和报告服务来运行月度报告。

3 个答案:

答案 0 :(得分:4)

试试这个:

SELECT *
  FROM logD
 WHERE YEAR(DATE) = YEAR(GetDate())
   AND MONTH(DATE)  = MONTH(GetDate())

答案 1 :(得分:3)

如果列DATE上有索引,那么您可以试试这个:

SELECT *
FROM logD
WHERE [DATE] BETWEEN CONVERT(VARCHAR(6),GETDATE(),112)+'01' AND DATEADD(DAY,-1,DATEADD(MONTH,1,CONVERT(VARCHAR(6),GETDATE(),112)+'01'))

但是,伙计,它看起来很难看......

答案 2 :(得分:1)

试试这个:

DECLARE @firstOfMonth smalldatetime = dateadd(month,datediff(month,0,getdate()),0);

SELECT * FROM logD
WHERE [date] > @firstOfMonth 
AND   [date] < dateadd(month,1,@firstOfMonth);