我有一个名为logD
的表,其中包含一个名为date
的字段(日期字段类型)。格式为“年 - 月 - 日”IE:2011-04-11
如果今天的日期是2011-07-31,我想要7月份的所有记录。如果今天的日期是2011-02-14,我想要2月份的所有记录,依此类推。
我正在使用SQL 2008和报告服务来运行月度报告。
答案 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);