次のようなクエリがあります。
SELECT STUFF
FROM TABLENAME
WHERE TO_CHAR(STARTDATE, 'DD-MON-YYYY') > '01-OCT-2015'
結果セットにはSTARTDATE
、すべて「01-OCT-2015」未満の が含まれています
私は何を間違っていますか?本当にありがとう!
この場合、文字列ではなく日付を比較することをお勧めします
文字列を比較する場合、クエリは、単一の文字列を日付に変換するのではなく、テーブルの関連する列のすべての日付を文字列に変換する必要があります。
このようにして、印刷形式に関係なく、日付が確実に正しく比較されます
SELECT STUFF
FROM TABLENAME
WHERE STARTDATE > to_date('01-OCT-2015 00:00:00' , 'DD-MON-YYYY HH24:MI:SS')
そして、クエリを試すことができます:
select to_date('01-OCT-2015 00:00:00' , 'DD-MON-YYYY HH24:MI:SS') from dual;
メインクエリを続行する前に、結果が期待どおりかどうかを確認する
これにより、日付が文字列として比較され、アルファベット順に並べられます。それらを文字列として比較する場合は、アルファベット順に正しく並べられる「YYYY-MM-DD」形式を使用する必要があります。「MM」は、月の省略形ではなく、ゼロが埋め込まれた整数としての月であることに注意してください。