Как я могу получить данные из базы данных SQL, которая охватывает учебный год? - PullRequest
0 голосов
/ 14 июня 2010

По сути, я хочу получить данные с августа по май для заданного набора дат. Использование оператора «между» работает до тех пор, пока я не пересекаю маркер года (т.е. между 8 и 12 работает - между 8 и 5 нет). Есть ли способ вытащить эти данные? Вот SQL-запрос, который я написал:

SELECT count(*), MONTH(DateTime)
FROM Downloads
WHERE YEAR(DateTime) BETWEEN 2009 AND 2010 AND MONTH(DateTime) BETWEEN 8 AND 5 
GROUP BY MONTH(DateTime)
ORDER BY MONTH(DateTime)"

Любая помощь приветствуется.

Спасибо

Эрик Р.

Ответы [ 2 ]

4 голосов
/ 14 июня 2010

Использование BETWEEN с YEAR () и MONTH () в любом случае разрушит любой шанс использования индексов для этого столбца.Я бы использовал:

SELECT
    COUNT(*) AS [count],
    YEAR(my_date) AS [year],
    MONTH(my_date) AS [month]
FROM
    Downloads
WHERE
    my_date >= '2009-08-01' AND
    my_date < '2010-06-01'
GROUP BY
    YEAR(my_date),
    MONTH(my_date)
ORDER BY
    YEAR(my_date), MONTH(my_date)

(я использовал my_date, потому что не могу заставить себя ссылаться на столбец как DateTime):)

1 голос
/ 14 июня 2010
SELECT count(*), MONTH(DateTime)
FROM Downloads
WHERE DateTime>'2009/8/1 00:00:00' AND datetime<'2010/6/1 00:00:00'
GROUP BY MONTH(DateTime)
ORDER BY MONTH(DateTime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...