SQL - запрос данных о событиях за текущий квартал - PullRequest
0 голосов
/ 14 ноября 2011

У меня есть следующая таблица событий календаря курса (для простоты показаны только несколько записей):

calendarItemID   classID   startDate   startTime   endTime
----------------------------------------------------------
1                1         2011-11-24  7pm         9pm
2                2         2011-11-02  7pm         9pm
3                1         2011-11-25  7pm         9pm 

Мне нужен запрос, который возвращает курсы для UPCOMING QUARTER (не текущего квартала). Есть ли функция SQL, которая может помочь, и / или это случай расчета дат в текущем квартале и проверки соответствия StartDate этим датам. Я ищу самый элегантный способ, если это возможно.

Заранее спасибо! Пол

Ответы [ 2 ]

0 голосов
/ 14 ноября 2011

Простой, но медленный подход:

WHERE DATEPART(qq,startDate) = DATEADD(qq, 1,GETDATE()) AND YEAR(startDate) = 
YEAR(DATEADD(qq, 1,GETDATE()))

Под медленным я подразумеваю, что даже если у вас есть индекс (startDate), он не будет использоваться.

Лучшее решение - получить start_date и end_date на следующий квартал.Я вижу несколько способов сделать это.Например, вы можете создать 2 скалярных UDF, которые возвращают start_date и end_date соответственно.Вы также можете создать 1 табличную функцию, которая возвращает 1 строку с 2 столбцами, а затем присоединиться к ней.Наконец, вы можете просто создать справочную таблицу и вручную ввести дату начала / окончания на следующие пару лет.

0 голосов
/ 14 ноября 2011

Создайте таблицу с именем скажем Quarters с полезным идентификатором, скажем, YYYYQQ, а также датой начала и окончания, тогда это простое объединение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...