получить данные за один семестр в MySQL - PullRequest
2 голосов
/ 24 сентября 2010

дорогие все .. я хочу сделать какой-нибудь отчет, который получит данные за один семестр. этот семестр начинался в апреле и заканчивался в сентябре каждого года. Но за второй семестр он получит данные с октября до марта (следующего года). Как мне сделать эту группировку или агрегацию? я просто сейчас основной запрос, как:

select * from dt_tb where `dt` >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH) 

1 Ответ

0 голосов
/ 24 сентября 2010

Примерно так:

SELECT *
FROM dt_tb
WHERE (dt >= '2010-10-01') AND (dt < '2011-05-01')

(все данные за период, начинающийся 1 октября и заканчивающийся ДО 1 мая, то есть 30 апреля).

Использование DATE_SUB () и CURDATE () хорошо, если вам нужно скользящее окно, но если вам требуются фиксированные начальные и конечные моменты времени, как семестр, лучше использовать фактические даты.

Кроме того, ваш метод выберетлюбые данные из фьючерсных семестров, которые еще не произошли, поскольку ваше предложение WHERE в основном гласит: «дайте мне все в базе данных, которая новее, чем 6 месяцев назад».Если вы храните семестры следующих двух лет, вы их тоже получите.Указывая даты начала / окончания, вы получаете только тот семестр, который вам действительно нужен.

...