Возможно, вы захотите считать временную часть вашей даты «ANOTHERDATE».
Если вас интересуют только целые дни, вы можете переписать свой запрос следующим образом:
SELECT ID, NAME, TO_CHAR(DATEBIRTH, 'DD/MM/YYYY HH24:MI:SS')
FROM PEOPLE
WHERE DATEBIRTH >= TRUNC(ANOTHERDATE - NDAY)
NBПредполагается, что «NDAY» является числовым.
«Короче говоря, я хочу выбрать всех, кто родился за N дней до определенной даты и времени, но я не совсем уверен, что это способне делайте этого и не дайте мне ожидаемых результатов. "
Мой первый запрос даст вам всех с днем рождения ПО ИЛИ ПОСЛЕ " NDAY "дней до" ДРУГОЙ ДАТЫ ".*
Это даст вам всех, у кого день рождения ON день, который "NDAY" дней до "ANOTHERDATE":
SELECT id,
name,
TO_CHAR(datebirth, 'DD/MM/YYYY HH24:MI:SS') AS birth_date
FROM people
WHERE TRUNC(datebirth) = TRUNC(anotherdate - NDAY);
Если есть индекс на "столбец datebirth ", то вы не хотите оборачивать его TRUNC, чтобы вы могли использовать следующее, которое могло бы использовать любой индекс для" datebirth ":
SELECT id,
name,
TO_CHAR(datebirth, 'DD/MM/YYYY HH24:MI:SS') AS birth_date
FROM people
WHERE datebirth >= TRUNC(anotherdate - NDAY)
AND datebirth < (TRUNC(anotherdate - NDAY) + 1);