「次のことを試しましたが、結果はありませんでした。」
提案するクエリは正しいように見えるので、おそらく5年前のALARMSがありませんか?
「BETWEENSYSDATEANDAdd_months(SYSDATE、6)を使用した場合と、BETWEEN Add_months(SYSDATE、6)ANDSYSDATEを使用した場合とでは違いがあるようです。」
BETWEEN演算子は、2つの値を特定の順序(下限、上限)で渡すことを要求します。したがって、このフィルターは真です。
where date '2012-03-01' between date '2012-01-01' and date '2012-06-01'
これは誤りですが:
where date '2012-03-01' between date '2012-06-01' and date '2012-01-01'
おそらくこれは不公平に思えますが、Oracleのドキュメントlt
では、BETWEEN演算子を次のgt
ステートメントに変換することで明確にしています。
where date '2012-03-01' >= date '2012-01-01'
and date '2012-03-01' <= date '2012-06-01'
2番目と3番目の式の値を入れ替えると、逆の順序でfalseが返される理由がわかります。