Oracle выбор диапазона дат в диапазоне дат - PullRequest
0 голосов
/ 28 января 2020

У меня есть таблица с полями даты начала и окончания. Я хотел бы, чтобы пользователи выбирали диапазон дат и возвращали записи, которые находятся в этом диапазоне. Я могу написать небольшой Java код для этого, но есть ли способ сделать это в Oracle выборе? Что еще хуже, дата окончания может быть нечеткой ... Я мог бы знать, что он живет там сегодня, но я не уверен насчет следующей недели.

Например, у меня есть список имен, адресов и даты, когда «имя» проживало по «адресу» (все даты имеют тип данных date)

name        address        moved in        moved out     known end date?
jack        123 main st    1/1/2015        12/31/2015    Y
jill        123 main st    1/1/2016        12/31/2016    Y
jeff        123 main st    1/1/2017        12/31/2017    Y
jane        123 main st    1/1/2018        12/31/2018    N (she may still be there)

, поэтому, если я сделаю запрос с 6/1/15 по 6/1/16, я должен получить jack и джилл С 6/17/17 по 01.07.17 я должен получить Джеффа. На 1/28/20 я должен получить Джейн, так как она все еще может быть там. Я хотел бы сделать это на стороне базы данных.

1 Ответ

0 голосов
/ 28 января 2020

В основном то, что сказал Майкл Бротон:

create table addr (name varchar2(10), address varchar2(20), moved_in date, moved_out date, known_end_date varchar2(1));

insert into addr values ('jack','123 main st',date '2015-01-01',date '2015-12-31','Y');
insert into addr values ('jill','123 main st',date '2016-01-01',date '2016-12-31','Y');
insert into addr values ('jeff','123 main st',date '2017-01-01',date '2017-12-31','Y');
insert into addr values ('jane','123 main st',date '2018-01-01',date '2018-12-31','N');

select *
from addr
where moved_in <= to_date(:end_date, 'MM/DD/YYYY') 
  and (moved_out >= to_date(:start_date, 'MM/DD/YYYY') or known_end_date = 'N');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...