sysdate,单个还是多个值?

时间:2013-06-19 18:49:19

标签: oracle

如果您运行此查询,结果需要3分钟才能生成.........

select to_char((sysdate),'dd_mm_yyyy___HH24_MI_SS') as MyStamp , e.* from EMP e;

MyStamp的值是单个值还是180(60秒x 3分钟)?

我测试了它,它看起来像一个单一的值。

但是我想弄清楚是否有一些我不能依赖它的快照。

我检查了文档:

http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions172.htm

并且它没有说什么。

2 个答案:

答案 0 :(得分:4)

SYSDATE返回的值在单个语句中是常量。大卫在他的回答中解释说,这有一些微妙之处。

显然,如果文档明确说明这一点会更好。

答案 1 :(得分:3)

只是为了添加APC的正确答案,值得注意的一个怪癖是在函数调用中执行的SQL作为另一个SQL语句的一部分获得了一个新的一致性点,包括sysdate的一致性,因此函数调用中的sysdate可以与父查询中的sysdate。

因此,如果您的查询中有一个使用sysdate ...

的函数调用
select ...
from   large_table
where  some_complex_relative_time_function(large_table.datetime_of_activity) < sysdate;

...将sysdate的值传递给它更安全:

select ...
from   large_table
where  some_complex_relative_time_function(large_table.datetime_of_activity, sysdate) < sysdate;