次のSQLクエリを見てみましょう:SELECT SYSDATE - 0 ParamDateTmp FROM Dual
。 ParamDateTmp
は単なるエイリアスであり、Dual
は特別なOracleテーブルであることを理解しています。しかし、私は結果がSYSDATE - 0
と期待されるのか理解できませんか?Oracle SQL Select句
ありがとうございます!
次のSQLクエリを見てみましょう:SELECT SYSDATE - 0 ParamDateTmp FROM Dual
。 ParamDateTmp
は単なるエイリアスであり、Dual
は特別なOracleテーブルであることを理解しています。しかし、私は結果がSYSDATE - 0
と期待されるのか理解できませんか?Oracle SQL Select句
ありがとうございます!
SYSDATE - 0は現在の日付のみを表示します。
SYSDATE - nは、現在の日付からn日を減算します。
Datatypes - Datetime/Interval Arithmeticリファレンスドキュメントによると、DATE +/- Numeric
の結果タイプはDATE
です。したがって、SYSDATE - 0
はSYSDATE
(値と型で)に相当します。変換やその他の魔法はありません。SYDATE - 0
の予期される結果はSYSDATE
です。
JayとMatの両方で指摘したように、sysdate-0は単にsysdateです。
COLESCEまたは同等のもの(NVLなど)を使用する代わりに、column
がnullの可能性があるコンテキストで0が返されることを保証するための怠惰な方法として、column-0
という形式の表現が見られることがあります。しかし、これは決してnullであってはならないので、sysdateの考慮事項ではありません。おそらくちょうど癖の力?