我有一个名为logD
的表,其字段名为date
(日期字段类型)。格式为“年 - 月 - 日”IE:2011-04-11该月的T-SQL选择记录
如果今天的日期是2011-07-31,我想要7月份的所有记录。如果今天的日期是2011年2月14日,我想要2月份的所有记录等等。
我正在使用SQL 2008和报告服务来运行月度报告。
我有一个名为logD
的表,其字段名为date
(日期字段类型)。格式为“年 - 月 - 日”IE:2011-04-11该月的T-SQL选择记录
如果今天的日期是2011-07-31,我想要7月份的所有记录。如果今天的日期是2011年2月14日,我想要2月份的所有记录等等。
我正在使用SQL 2008和报告服务来运行月度报告。
试试这个:
SELECT *
FROM logD
WHERE YEAR(DATE) = YEAR(GetDate())
AND MONTH(DATE) = MONTH(GetDate())
你可以这样做,所以查询将使用索引 –
如果您对列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'))
但是,男人,相貌丑陋...
试试这个:
DECLARE @firstOfMonth smalldatetime = dateadd(month,datediff(month,0,getdate()),0);
SELECT * FROM logD
WHERE [date] > @firstOfMonth
AND [date] < dateadd(month,1,@firstOfMonth);
有什么哟你试过了吗?我们在这里帮助解决问题,而不是为你做你的工作。 –