答えは:状況によります。
合計で、データベースには3つがあります タイムゾーン
- セッションのタイムゾーン:
SESSIONTIMEZONE
これは、ALTER SESSION SET TIME_ZONE=...で変更できます。 いつでも。
-
CURRENT_DATE -
LOCALTIMESTAMP -
CURRENT_TIMESTAMP
CAST({TIMESTAMP/DATE without any timezone} AS TIMESTAMP WITH {LOCAL} TIME ZONE)を実行する場合のターゲットタイムゾーンでもあります。
デフォルトのSESSIONTIMEZONE 環境変数ORA_SDTZで設定できます または(Windowsの場合)レジストリエントリHKLM\SOFTWARE\Wow6432Node\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ (32ビットクライアントの場合)、それぞれ。 HKLM\SOFTWARE\ORACLE\KEY_%ORACLE_HOME_NAME%\ORA_SDTZ (64ビットクライアントの場合)。
- データベースのタイムゾーン:
DBTIMEZONE
実際、これは日常の使用ではそれほど重要ではなく、TIMESTAMP WITH LOCAL TIME ZONEにのみ関連します。 データ型の列とストレージ形式を定義します。
これはありません SYSDATEのタイムゾーン またはSYSTIMESTAMP !!!
DBTIMEZONEは変更できません データベースにTIMESTAMP WITH LOCAL TIME ZONEのテーブルが含まれている場合 列と列にはデータが含まれています。それ以外の場合は、ALTER DATABASE SET TIME_ZONE='...';で変更できます。 。データベースがシャットダウンされて再起動されるまで、変更は有効になりません。
DBTIMEZONE データベースの作成時に設定されます。データベースの作成中にタイムゾーンが指定されていない場合、Oracleはデフォルトでサーバーのオペレーティングシステムのタイムゾーンになります。
- データベースサーバーのオペレーティングシステムのタイムゾーン:
このタイムゾーンは、
の結果に関連しています。-
SYSDATE -
SYSTIMESTAMP
当然、このタイムゾーンはデータベースレベルで変更できません。自国で夏時間が使用されている場合、このタイムゾーンは年に2回変更される可能性があります。 SELECT TO_CHAR(SYSTIMESTAMP, 'tzr') FROM dual;を使用して問い合わせることができます。 、たとえば。
したがって、DBサーバーOSが適切にセットアップされている場合は、来週から夏の時間を取得する必要があります(少なくともヨーロッパでは)