2016-11-17 4 views
2

私は注文と注文日を "Mon Jan 01 12:55:55 2016 IST"の形式で取得しようとしていますが、ISTはインド標準時ですが、 "Jan 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 Reddy。

+0

私はあなたが欲しいものを理解していません –

+0

テーブルの結果とあなたの予想される出力。 –

答えて

1

ORDERDATEのデータタイプによって異なります。データ型DATEまたはTIMESTAMPには、タイムゾーン情報が含まれていません。このような場合は、ISTを静的テキストとしてのみ追加することができます。 ORDERDATEの場合データ型で

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; 

また、あなたのタイムゾーンを添付して、出力のためにこれを使用することができますTIMESTAMP次のとおりです。ORDERDATEの場合データ型で

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; 

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の値が 'Asia/Calcutta'時間として格納されている場合にのみ、これらのすべてが適切に動作することに注意してください。

ALTER SESSION SET TIME ZONE = 'IST';またはFROM_TZ(ORDERDATE, 'IST')をもう1つ書きます。 ISTは、「イスラエル標準時」または「アイスランド標準時」(さらに多分)を意味する可能性があります。したがって、Oracleではエラーが発生します。最近のタイムゾーンファイルがデータベースにインストールされている場合は、タイムゾーン名Asia/Kolkataも問題ありません。

+0

SELECT ORDERID AS ORD_ID、TO_CHAR(ローカルで注文、 'Dy Mon dd HH24:MI:SS yyyy TZD')AS ORDER_DATE FROM ORDER; それは働いた!!おかげさまで –

関連する問題