2014-09-20 4 views
2

Моя таблица имеет структуру, как этотMySQL GET строки между двумя датами на основе двух столбцов

id | date_birth | date_marriage 
1 | 1970-01-24 | 2000-05-14 
2 | 1979-05-08 | 2008-08-12 

Как получить события между двумя датами выше данных в MySQL (сравнение дата независимо от года). Например, если start_date является 2014-05-01 и дата окончания 2014-05-20 то выход должен быть

id | event 
1 | married on 2000-05-14 
2 | born on 1979-05-08 

UPDATE: Если обе даты брака и дата рождения попадает в подаваемом диапазон дат для того же человека выход должен содержит две колонки для человека

(извините за мой плохой английский)

+0

Можете ли вы подготовить SQLfiddle? – user4035

+0

@ user4035 http://sqlfiddle.com/#!2/11286 – dInGd0nG

+0

Спасибо. Upvoted. – user4035

ответ

1

В ответ на ваш комментарий, вы можете получить две строки, если либо даты матчей с помощью union.

Вы можете проверить дату, независимо от года, путем преобразования в формат, который не включает год, например %m%d. Обратите внимание, что формат должен быть сортируемым (наиболее значимым числом) для сравнения.

select * 
from YourTable 
where date_format(date_birth,'%m%d') between '0501' and '0520' 
union all 
select * 
from YourTable 
where date_format(date_marriage,'%m%d') between '0501' and '0520' 
+0

Что делать, если дата рождения и дата вступления в брак в тот же месяц? Я хочу, чтобы это было два ряда – dInGd0nG

Смежные вопросы