Moh*_*shi 46 oracle plsql oracle10g
在oracle 10g中执行此SQL后:
SELECT SYSDATE, CURRENT_TIMESTAMP FROM DUAL
Run Code Online (Sandbox Code Playgroud)
我收到这个奇怪的输出:

造成时间差异的原因是什么?服务器时间等于SYSDATE值
Ale*_*ole 79
CURRENT_DATE并CURRENT_TIMESTAMP在会话时区返回当前日期和时间.
SYSDATE并SYSTIMESTAMP返回系统日期和时间 - 即数据库所在系统的日期和时间.
如果您的客户端会话与数据库所在的服务器不在同一时区(或者说无论如何,通过您的NLS设置),混合SYS*和CURRENT_*函数将返回不同的值.它们都是正确的,它们只代表不同的东西.看起来您的服务器是(或认为是)在+4:00时区,而您的客户端会话是在+4:30时区.
如果时钟不同步,您可能还会看到时间上的微小差异,这似乎不是问题.
小智 21
SYSDATE,SYSTIMESTAMP返回数据库的日期和时间标记,而current_date,current_timestamp返回的位置,从那里你工作的日期和时间戳.
例如.我在印度工作,访问位于巴黎的数据库.下午4:00 IST:
select sysdate,systimestamp from dual;
这回报了巴黎的日期和时间:
结果
12-MAY-14 12-MAY-14 12.30.03.283502000 PM +02:00
Run Code Online (Sandbox Code Playgroud)
select current_date,current_timestamp from dual;
这让我知道印度的日期和时间:
结果
12-MAY-14 12-MAY-14 04.00.03.283520000 PM ASIA/CALCUTTA
Run Code Online (Sandbox Code Playgroud)
请注意3:30的时差.
SYSDATE 返回数据库所在系统的系统日期
CURRENT_TIMESTAMP 返回会话时区中的当前日期和时间,采用数据类型 TIMESTAMP WITH TIME ZONE 的值
执行这个命令
ALTER SESSION SET TIME_ZONE = '+3:0';
Run Code Online (Sandbox Code Playgroud)
它会给你同样的结果。
| 归档时间: |
|
| 查看次数: |
136030 次 |
| 最近记录: |