Проверка наличия даты менее 90 лет в oracle sql

#sql #oracle

#sql #Oracle

Вопрос:

У меня есть условие, при котором мне нужна дата рождения, которая должна быть меньше системной даты, а не null, возраст менее 90 лет, затем вставить в таблицу. Я не знаю, как использовать возраст менее 90 лет в запросе

Запрос:

 INSERT INTO table2 (dob)

SELECT dob
FROM table1
WHERE dob <= sysdate
AND dob IS NOT NULL;
  

Пожалуйста, скажите мне, как использовать возраст менее 90 лет в запросе

Спасибо

Ответ №1:

Вот один из вариантов:

 SELECT dob
FROM table1
WHERE
    TRUNC(MONTHS_BETWEEN(sysdate, dob) / 12) < 90 AND
    dob IS NOT NULL;
  

Ответ №2:

Попробуйте это:

 SELECT dob
FROM table1
WHERE dob > ADD_MONTHS(sysdate, -90*12)
AND dob IS NOT NULL;
  

Ответ №3:

Я предпочитаю работать с interval константами для такого рода запросов:

 select *
from table1
where dob > trunc(sysdate) - interval '90' year;
  

Нет необходимости добавлять дополнительное dob is not null условие, потому dob > ... что вернет что-то, только если dob не равно null.