答えは:状況によります。
合計で、データベースには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が適切にセットアップされている場合は、来週から夏の時間を取得する必要があります(少なくともヨーロッパでは)