SYSDATE与CURRENT_DATE都是取当前系统日期,但也是有区别的:
SYSDATE 系统时间 CURRENT_DATE 会话时间
- SQL> SELECT SYSDATE,CURRENT_DATE FROM DUAL;
SYSDATE CURRENT_DATE
----------------- -----------------
2009-02-25 16:38:01.0 2009-02-25 16:38:01.0
一般情况下,二者相同,但有时CURRENT_DATE比SYSDATE快一秒,
SYSDATE CURRENT_DATE
----------------- -----------------
2009-02-25 16:38:43.0 2009-02-25 16:38:44.0
- 但如果修改了当前会话的时区,则会不同。
SQL> SELECT SESSIONTIMEZONE FROM DUAL;
SESSIONTIMEZONE
------------------------------
+08:00
- SQL> SELECT SYSDATE,CURRENT_DATE FROM DUAL;
SYSDATE CURRENT_DATE
----------------- -----------------
2009-02-25 16:42:10.0 2009-02-25 16:42:10.0
- SQL> ALTER SESSION SET TIME_ZONE='+09:00';
会话已更改。
- SQL> SELECT SYSDATE,CURRENT_DATE FROM DUAL;
SYSDATE CURRENT_DATE
----------------- -----------------
2009-02-25 16:42:48.0 2009-02-25 17:42:49.0