Oracle SQL Select子句

时间:2011-12-23 09:57:00

标签: sql oracle

让我们看一下以下的sql查询:SELECT SYSDATE - 0 ParamDateTmp FROM Dual。我知道ParamDateTmp只是一个别名,Dual是一个特殊的Oracle表。但我无法理解SYSDATE - 0的预期结果是什么?

谢谢!

3 个答案:

答案 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。可能只是习惯的力量?