2013-11-09 1 views
0

Предположим, что месяц считается Oct 2013, и я хочу вытащить все строки, в которых October 2013 находится между датой начала и окончания.Лучший способ выбора строк, где месяц находится между датой начала и окончания

настоящее время я использую это в моей статье WHERE:

WHERE (start_date >= '2013-10-01' AND end_date < '2013-11-01') OR // between 1st and 31st 
     (start_date >= '2013-10-01' AND start_date < '2013-11-01') OR // start falls in oct'13 
     (end_date >= '2013-10-01' AND end_date < '2013-11-01') // end falls in oct'13 

Это почти делает работу ожидать в том случае, когда даты начала и окончания находятся за пределами Oct'13. Например, он пропустит строки, в которых дата начала говорить 2013-05-01 и дата окончания 2014-02-22

Я уверен, что будет короткий и довольно способ использовать в WHERE, чем длинный подход, который я следую в настоящий момент. Какие-либо предложения?

+0

Я не ясно, на какие ценности должны быть возвращены. Вы говорите, что возвращаете все записи, которые начинаются или заканчиваются в октябре? Или записи, начинающиеся до конца и конца после него? Возможно, вы могли бы привести несколько примеров. – Moob

+0

@ DBC: если вы считаете, что есть соответствующий ответ, отметьте его как правильный ответ. –

+0

Я сделал. К сожалению, я не могу выдвигать свою кандидатуру из-за ограничения репутаций. – DBC

ответ

2

насчет WHERE start_date < '2013-11-01' And end_date >= '2013-10-01'

+0

+1 простота в своем лучшем виде. Если он начинается до конца месяца и заканчивается после начала месяца, бум! Обнаружено перекрытие для каждого условия. –

+0

+1 yup, отлично. – Moob

0

Добавить еще один или

WHERE (start_date >= '2013-10-01' AND end_date <= '2013-10-31') OR 
    (start_date < '2013-10-01' AND end_date > '2013-10-31') 
Смежные вопросы