日付「ANOTHERDATE」の時間部分を検討することをお勧めします。
丸一日のみに関心がある場合は、クエリを次のように書き直すことができます。
SELECT ID, NAME, TO_CHAR(DATEBIRTH, 'DD/MM/YYYY HH24:MI:SS')
FROM PEOPLE
WHERE DATEBIRTH >= TRUNC(ANOTHERDATE - NDAY)
注: これは、"NDAY" が数値であると想定しています。
「簡単に言うと、特定の日時の N 日前に生まれたすべての人を選択したいのですが、これが正しい方法なのか、期待どおりの結果が得られるのか確信が持てません。」
私の最初のクエリは、 「ANOTHERDATE」の「 ON OR AFTER」「NDAY」日前の誕生日を持つすべての人を取得します。
これにより、「ANOTHERDATE」の「NDAY」日前に誕生日を迎えるすべての人が取得されます。
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);