2013-10-16 84 views
1

是否可以按以下格式顯示sysdate?用時區指定日期/時間格式

Wed Oct 16 15:04:44 MDT 2013 

這出來的Unix日期格式。

echo `date` 

編輯:最新版本缺少時區信息。另外,我不知道這是最優雅的解決方案:

SELECT TO_CHAR (sysdate, 'DY') || ' ' || to_char(sysdate, 'MON DD') || ' ' ||  to_char(sysdate, 'HH24:MM:SS') || ' ' || to_char(sysdate, 'YYYY') 
FROM DUAL ; 
+1

你到目前爲止嘗試過什麼? http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements004.htm#i34924 –

+0

你不需要'echo \'date \'',你可以說'日期',對?祝你好運。 – shellter

+0

我試圖複製unix如何顯示日期/時間。如果我只是做回聲日期,那麼它輸出日期。 – CFNinja

回答

3

sysdate回報date數據類型,它不包含有關區信息的價值。爲了能夠顯示時區區域的簡化版本,你需要與時區的數據類型時間戳的值進行操作,並在日期時間格式面膜使用TZD格式元素:

select to_char(cast(sysdate as timestamp with local time zone) 
       , 'Dy Mon dd hh24:mi:ss TZD yyyy') as res 
from dual 

結果:

RES       
------------------------------- 
Thu Oct 17 02:14:00 PDT 2013 

編輯

週三10月16日: 12:0 2013是我得到的

嘗試顯式指定會話的確切時區。因爲可能有幾個時區區域與一個偏移量關聯,並且oracle不會選擇一個並返回null。所以在執行查詢之前執行alter session set time_zone='<<specify_exact_time_zone_region>>'。例如:

SQL> alter session set time_zone='Canada/Mountain'; 

Session altered. 

SQL> select to_char(cast(sysdate as timestamp with local time zone) 
    2     , 'Dy Mon dd hh24:mi:ss TZD yyyy') as res 
    3  from dual; 

RES                    
-------------------------------             
Thu Oct 17 02:51:14 MDT 2013  
+0

Wed Oct 16:12:0 2013是我得到的。 – CFNinja

+0

如果您使用SYSTIMESTAMP而不是SYSDATE,那麼您將獲得系統的日期,時間和時區。可能是更好的方法。 –