2013-07-29 166 views

回答

46

CURRENT_DATECURRENT_TIMESTAMP返回會話時區中的當前日期和時間。

SYSDATESYSTIMESTAMP返回系統日期和時間 - 也就是數據庫所在的系統的日期和時間。

如果您的客戶端會話與數據庫所在的服務器不在同一時區(或者說它不是通過您的NLS設置),混合SYS*CURRENT_*函數將返回不同的值。他們都是正確的,他們只是代表不同的事情。它看起來像你的服務器是(或者認爲它是)在+4:00時區,而你的客戶端會話是在+4:30時區。

如果時鐘不同步,您可能會看到時間上的細微差異,這在這裏似乎沒有問題。

2

SYSDATE返回系統日期,在其上駐留數據庫

CURRENT_TIMESTAMP返回會話時區中的當前日期和時間的系統的,在數據​​類型時間標記值WITH TIME ZONE

執行此comman

ALTER SESSION SET TIME_ZONE = '+3:0'; 

,它會爲您提供相同的結果。

+0

+4:30表示伊朗夏令時。有伊朗,現在是夏天!爲什麼要改變我的時區? –

+0

becasue SYSDATE返回數據庫所在系統的系統日期。返回類型是TIMESTAMP WITH TIME ZONE,CURRENT_TIMESTAMP返回會話時區中的當前日期和時間,值爲數據類型TIMESTAMP WITH TIME ZONE – Harshit

10

SYSDATESYSTIMESTAMP返回數據庫的日期和時間標記,而current_datecurrent_timestamp返回的位置,從那裏你工作的日期和時間戳。

例如,我從印度工作,訪問位於巴黎的數據庫。在4:00 PM IST:

select sysdate,systimestamp from dual;

這將返回我巴黎的日期和時間:

結果

12-MAY-14 12-MAY-14 12.30.03.283502000 PM +02:00 

select current_date,current_timestamp from dual;

這將返回我的日期印度時間:

結果

12-MAY-14 12-MAY-14 04.00.03.283520000 PM ASIA/CALCUTTA 

請注意,3:30的時間差。

0
  • SYSDATE提供服務器的日期和時間。
  • CURRENT_DATE提供了客戶端的日期和時間(即,您的系統)
  • CURRENT_TIMESTAMP提供了clinet的數據和時間戳。
-2
  1. SYSDATE,在安裝了數據庫服務器的systimestamp返回日期時間。 SYSDATE - 僅返回日期,即「yyyy-mm-dd」。 systimestamp返回帶時間和區域的日期,即「yyyy-mm-dd hh:mm:ss:ms timezone」
  2. now()返回執行時間語句的日期時間,即「yyyy-mm-dd hh:mm:ss 「
  3. CURRENT_DATE - 」yyyy-mm-dd「,CURRENT_TIME - 」hh:mm:ss「,CURRENT_TIMESTAMP - 」yyyy-mm-dd hh:mm:ss timezone「。這些與記錄插入時間有關。
0

注意:SYSDATE - 僅返回日期,即「yyyy-mm-dd」不正確。 SYSDATE返回數據庫服務器的系統日期,包括小時,分鐘和秒。例如:

SELECT SYSDATE FROM DUAL; 將返回類似於以下內容的輸出:12/15/2017 12:42:39 PM

+1

請格式化您的代碼。 – RAS

相關問題