Oracle SQL Select语句

3
让我们看一下以下的SQL查询:SELECT SYSDATE - 0 ParamDateTmp FROM Dual。我知道ParamDateTmp只是一个别名,而Dual是一个特殊的Oracle表。但我不明白SYSDATE - 0的预期结果是什么?
谢谢!
3个回答

6

SYSDATE - 0将只给您当前日期。

SYSDATE - n会从当前日期减去n天。


4
根据数据类型 - 日期/时间间隔算术参考文档,DATE +/- Numeric的结果类型是DATE。因此,SYSDATE - 0等同于SYSDATE(在值和类型上)。这里没有进行转换或其他魔法-SYDATE - 0的预期结果是SYSDATE

1

正如Jay和Mat所指出的那样,sysdate-0就是sysdate。

我有时会看到形如column-0的表达式,这是一种懒惰的方式,确保在column可能为空的情况下返回0,而不是使用COALESCE或其等效项,例如NVL。然而,在sysdate的情况下,这不应该是一个考虑因素,因为它永远不应该为空。可能只是习惯使然?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接