如果您运行此查询,结果需要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
并且它没有说什么。
答案 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;