Мне нужно отфильтровать запрос Oracle SQL по лицам, которым исполнился 21 год в течение календарного 2019 года - PullRequest
0 голосов
/ 27 января 2020

Мне нужно отфильтровать запрос Oracle SQL по лицам, которым исполнилось 13 лет в течение календарного 2019 года, иными словами, лицам, которым в 2019 году исполнилось 13 лет. Кто-нибудь знает код для этого? Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 27 января 2020

Предполагая, что в вашей таблице есть столбец date_of_birth, это сработает (2006 г. - 2019-13):

select * 
from   your_table
where  to_number(extract(year from date_of_birth)) = 2006;

Я заметил, что заголовок вашего вопроса имеет значение года, отличное от его тела, поэтому, возможно, нам нужно для передачи проблемной математики на SQL:

select *
from your_table
where date '2019-01-01' = trunc(date_of_birth, 'yyyy') + interval '21' year
/

Усечение DOB с маской формата преобразует все даты в первое января этого года. Затем мы добавляем интервал в 21 год. Сравнение этого значения с первым января 2019 года даст вам всех, кому в прошлом году исполнился 21 год.

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

Я бы использовал предложение between с date_of_birth + 21 year, чтобы позволить oracle использовать index на date_of_birth, если таковое имеется:

select *
  from your_table
 where date_of_birth + interval '21' year between date '2019-01-01' and date '2019-12-31';

Cheers !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...