2011-12-23 25 views
3

次のSQLクエリを見てみましょう:SELECT SYSDATE - 0 ParamDateTmp FROM DualParamDateTmpは単なるエイリアスであり、Dualは特別なOracleテーブルであることを理解しています。しかし、私は結果がSYSDATE - 0と期待されるのか理解できませんか?Oracle SQL Select句

ありがとうございます!

答えて

6

SYSDATE - 0は現在の日付のみを表示します。

SYSDATE - nは、現在の日付からn日を減算します。

4

Datatypes - Datetime/Interval Arithmeticリファレンスドキュメントによると、DATE +/- Numericの結果タイプはDATEです。したがって、SYSDATE - 0SYSDATE(値と型で)に相当します。変換やその他の魔法はありません。SYDATE - 0の予期される結果はSYSDATEです。

1

JayとMatの両方で指摘したように、sysdate-0は単にsysdateです。

COLESCEまたは同等のもの(NVLなど)を使用する代わりに、columnがnullの可能性があるコンテキストで0が返されることを保証するための怠惰な方法として、column-0という形式の表現が見られることがあります。しかし、これは決してnullであってはならないので、sysdateの考慮事項ではありません。おそらくちょうど癖の力?