2016-11-17 181 views
2

我正在嘗試以下查詢以獲取訂單和訂單日期作爲「Mon Jan 01 12:55:55 2016 IST」格式,其中IST是印度標準時間,但我能夠獲得「Mon Jan 01 12:55 :55 2016「。如何在oracle中獲取日期格式的國家/地區時區?

我不知道如何獲得時區。我的意思是必須傳遞哪個參數才能獲得它。你能幫我解決這個問題嗎?

SELECT ORDERID AS ORD_ID, TO_CHAR(ORDERDATE, 'Dy Mon dd HH24:MI:SS yyyy') AS ORDER_DATE 
FROM ORDER 

謝謝 Hanumanth雷迪。

+0

我不明白你想要什麼 –

+0

顯示錶結果和您的預期輸出。 –

回答

1

它取決於列ORDERDATE的數據類型。數據類型DATETIMESTAMP不包含任何時區信息。在這種情況下,您可以僅將IST作爲靜態文本附加,例如像這樣。

SELECT ORDERID AS ORD_ID, 
    TO_CHAR(ORDERDATE, 'Dy Mon dd HH24:MI:SS yyyy')||' IST' AS ORDER_DATE 
FROM ORDER; 
SELECT ORDERID AS ORD_ID, 
    TO_CHAR(ORDERDATE, 'Dy Mon dd HH24:MI:SS yyyy "IST"') AS ORDER_DATE 
FROM ORDER; 

ORDERDATE情況下,數據類型是TIMESTAMP你還可以將你的時區,並使用這個輸出:

SELECT ORDERID AS ORD_ID, 
    TO_CHAR(FROM_TZ(ORDERDATE , 'Asia/Calcutta'), 'Dy Mon dd HH24:MI:SS yyyy TZD') AS ORDER_DATE 
FROM ORDER; 
ALTER SESSION SET TIME ZONE = 'Asia/Calcutta'; 
SELECT ORDERID AS ORD_ID, 
    TO_CHAR(ORDERDATE AT LOCAL, 'Dy Mon dd HH24:MI:SS yyyy TZD') AS ORDER_DATE 
FROM ORDER; 

ORDERDATE情況下,數據類型是TIMESTAMP WITH TIME ZONE你可以簡單地做:

ALTER SESSION SET TIME ZONE = 'Asia/Calcutta'; 
SELECT ORDERID AS ORD_ID, 
    TO_CHAR(ORDERDATE, 'Dy Mon dd HH24:MI:SS yyyy TZD') AS ORDER_DATE 
FROM ORDER; 

請注意,除了最後一個查詢,只有當ORDERDATE中的值存儲爲「亞洲/加爾各答」時間時,所有這些纔會正常工作。

另一個說明,你不能使ALTER SESSION SET TIME ZONE = 'IST';FROM_TZ(ORDERDATE, 'IST')IST也可能意味着「以色列標準時間」或「冰島標準時間」(甚至更多),因此您將在Oracle中出現錯誤。時區名稱Asia/Kolkata也很好,只要您在數據庫中安裝了最新的時區文件。

+0

SELECT ORDERID AS ORD_ID,TO_CHAR(ORDERDATE AT LOCAL,'Dy Mon dd HH24:MI:SS yyyy TZD')AS ORDER_DATE FROM ORDER; 它的工作! 謝謝。 –

相關問題