让我们看一下以下的sql查询:SELECT SYSDATE - 0 ParamDateTmp FROM Dual
。我知道ParamDateTmp
只是一个别名,Dual
是一个特殊的Oracle表。但我无法理解SYSDATE - 0
的预期结果是什么?
谢谢!
答案 0 :(得分:6)
SYSDATE - 0只会显示当前日期。
SYSDATE - n将从当前日期减去n天。
答案 1 :(得分:4)
根据Datatypes - Datetime/Interval Arithmetic参考文档,DATE +/- Numeric
的结果类型为DATE
。因此SYSDATE - 0
相当于SYSDATE
(价值和类型)。那里没有转换或其他魔法 - SYDATE - 0
的预期结果是SYSDATE
。
答案 2 :(得分:1)
正如Jay和Mat所指出的,sysdate-0只是sysdate。
我有时看到column-0
形式的表达式是一种确保在column
可以为null的上下文中返回0的惰性方法,而不是使用COALESCE或其等价物,例如NVL 。但是,这不应该是sysdate的考虑因素,因为它永远不应该为null。可能只是习惯的力量?