T-SQL выберите записи за месяц - PullRequest
1 голос
/ 15 июля 2011

У меня есть таблица с именем logD, с полем с именем date (тип поля даты). Формат "год-месяц-день" IE: 2011-04-11

Если сегодняшняя дата 2011-07-31, я хочу получить все записи за июль. Если сегодняшняя дата 2011-02-14, я хочу получить все записи за февраль и т. Д.

Я использую SQL 2008 и службы отчетов для запуска ежемесячного отчета.

Ответы [ 3 ]

4 голосов
/ 15 июля 2011

Попробуйте это:

SELECT *
  FROM logD
 WHERE YEAR(DATE) = YEAR(GetDate())
   AND MONTH(DATE)  = MONTH(GetDate())
3 голосов
/ 15 июля 2011

Если у вас есть индекс в столбце 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'))

Но, чувак, это выглядит ужасно ...

1 голос
/ 15 июля 2011

Попробуйте это:

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

SELECT * FROM logD
WHERE [date] > @firstOfMonth 
AND   [date] < dateadd(month,1,@firstOfMonth);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...