2016-04-15 1 views
-4

Из базы данных оракула Я пытаюсь захватить людей, которым в будущем будет 65 лет через 30 дней.oracle найти людей, чей 65-летний юбилей 30 дней в будущем

Спасибо!

+2

Пожалуйста, разместите структуру данных, образцы данных, необходимый результат и то, что вы пробовали до сих пор. [Здесь] (http://stackoverflow.com/help/mcve) вы найдете что-то полезное для создания хорошего примера – Aleksej

+1

Сделайте SELECT, добавьте предложение WHERE, где вы проверяете current_date между 65 годами - 30 днями и 65 годами. – jarlh

+0

SELECT months_between (sysdate + 30, date- – Mohammed

ответ

2
select * 
from your_table 
where birthdate between add_months(sysdate, -12*65) and add_months(sysdate, -12*65) + 30 

Логически, вы хотите добавить 65 лет к дате рождения, а затем проверить, если это между сегодня и 30 дней с сегодняшнего дня. У Oracle только есть функция add_months, нет add_years, поэтому вам нужно умножить на 12. Наконец, я переместил add_months в нужную сторону; если оптимизатор умный, он будет выполнять вычисления только один раз, а не один раз в строке - и не применять функцию к «birthdate» позволяет использовать индекс, если у вас есть один определенный в этом столбце.