2011-10-18 6 views
0

私たちのデータベースにあるTZNAMEをどのように見つけ出すことができますか? とTZNAMEで、私は(のリストから)のようなものを意味Oracle:TZNAMEで取得可能ですか?

select * from V$TIMEZONE_NAMES; 

我々は

select dbtimezone from dual 

をすれば、私はDBTIMEZONE = -04を得る:00

我々はあるDBTIMEZONEを取得タイムゾーンの数値表現ですが、それらの多くが異なる場所にあるため、100%正確になることはできません。例:現在、我々はEST CANADAとEST NY(または昼光の節約を伴わない日付)の両方が可能な-04:00を持っています。

データベースタイムゾーンの実際のTZNAMEを取得する方法はありませんか?実際の時間?

たちはTIMEZONEとのTIMESTAMPを提供し、タイムスタンプからTIMEZONE_REGIONを抽出することができます

答えて

1

ありがとうございます。これと同じように:複数のタイムゾーン名はマイナス4時間のオフセットにマップするため

SQL> select extract(timezone_region from current_timestamp) 
    2 from dual 
    3/

EXTRACT(TIMEZONE_REGIONFROMCURRENT_TIMESTAMP) 
---------------------------------------------------------------- 
CET 

SQL> alter session set time_zone='UTC'; 

Session altered. 

SQL> select extract(timezone_region from current_timestamp) 
    2 from dual 
    3/

EXTRACT(TIMEZONE_REGIONFROMCURRENT_TIMESTAMP) 
---------------------------------------------------------------- 
UTC 

SQL> alter session set time_zone='-04:00'; 

Session altered. 

SQL> select extract(timezone_region from current_timestamp) 
    2 from dual 
    3/

EXTRACT(TIMEZONE_REGIONFROMCURRENT_TIMESTAMP) 
---------------------------------------------------------------- 
UNKNOWN 

SQL> 

最後の結果は、UNKNOWNを返します。セッションレベルでタイムゾーン名を設定するには、さまざまな方法があります。そのうちの1つは、この問題を回避する最善の方法です。 Find out more

+0

実際のタイムスタンプが-​​04:00を返すため、これは不明です。助けてくれてありがとう!! – Kevin

+0

はあいまいさに基づいているため、タイムゾーンが変更されても-04:00は決して変更されません。 – Kevin

関連する問題