due_date
今日の値を除外する簡単なクエリがあります。
SELECT *
FROM ORDER
WHERE DUE_DATE = CURRENT_DATE AND
ROWNUM <= 10
ORDER BY DUE_DATE ASC
ただし、今日のように期日がある注文がたくさんある場合でも、クエリは実際には0行を返します。
どうして?前もって感謝します。
申し訳ありませんが、DUE_DATE の型がDate
次のように、日付を切り捨てる必要があります。
SELECT *
FROM ORDER
WHERE TRUNC(DUE_DATE) = TRUNC(CURRENT_DATE) AND
ROWNUM <= 10
ORDER BY DUE_DATE ASC
または、次のように範囲比較を使用します
SELECT *
FROM ORDER
WHERE DUE_DATE BETWEEN TRUNC(CURRENT_DATE)
AND TRUNC(CURRENT_DATE) + INTERVAL '1' DAY - INTERVAL '1' SECOND AND
ROWNUM <= 10
ORDER BY DUE_DATE ASC
後者の例は、インデックスを使用できるため、パフォーマンスが向上する可能性があります (DUE_DATE にインデックスがあると仮定します)。もちろん、TRUNC(DUE_DATE) に関数ベースのインデックスを追加することもできます。その場合、どちらも同じようにうまく機能する可能性があります。
共有してお楽しみください。
CURRENT_DATE には、月、日、および年が含まれます。あなたの期日には、おそらく時、分、秒も含まれています。その場合は、比較を行うときに日付を切り捨てる必要があります。