NLS_TIMESTAMP_TZ_FORMATは、タイム・ゾーン付きタイムスタンプのデフォルトの書式 を定義します。このパラメータは、TO_CHARおよびTO_TIMESTAMP_TZ関数で使用します。
NLS_TIMESTAMP_TZ_FORMATの値を指定するには、その値を初期化パラメータ・ファイル に設定します。設定した値は、クライアントのクライアント環境変数として指定できます。
例 例例
例 3-16 NLS_TIMESTAMP_TZ_FORMATの設定の設定の設定の設定
書式の値は、次のように引用符で囲む必要があります。
NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH:MI:SS.FF TZH:TZM'
次のTO_TIMESTAMP_TZ関数の例では、NLS_TIMESTAMP_TZ_FORMATに指定された書式 の値を使用しています。
SQL> SELECT TO_TIMESTAMP_TZ('2000-08-20, 05:00:00.55 America/Los_Angeles', 'yyyy-mm-dd hh:mi:ss.ff TZR') FROM dual;
関連項目関連項目関連項目
関連項目: TO_TIMESTAMP関数とALTER SESSION文の詳細は、
『Oracle9i SQLリファレンス』を参照してください。
パラメータ・タイプ パラメータ・タイプパラメータ・タイプ
パラメータ・タイプ: 文字列 パラメータの有効範囲
パラメータの有効範囲パラメータの有効範囲
パラメータの有効範囲: 動的、初期化パラメータ、環境変数およびALTERSESSION デフォルト値
デフォルト値デフォルト値
デフォルト値: NLS_TERRITORYから導出 値の範囲
値の範囲値の範囲
値の範囲: 有効な日時書式マスク
出力は次のようになります。
TO_TIMESTAMP_TZ('2000-08-20,05:00:00.44AMERICA/LOS_ANGELES','YYYY-MM-DDHH:M ---20-AOU-00 05:00:00.440000000 AMERICA/LOS_ANGELES
NLS_TIMESTAMP_TZ_FORMATの値は次の方法で変更できます。
■ 初期化パラメータ・ファイル内で値を変更してから、インスタンスを再起動します。
■ ALTER SESSION文を使用します。
データベースのタイム・ゾーン・パラメータ データベースのタイム・ゾーン・パラメータデータベースのタイム・ゾーン・パラメータ
データベースのタイム・ゾーン・パラメータ 次の項目を指定すると、特定のタイム・ゾー ンを持つデータベースを作成できます。
■ UTC(協定世界時、以前のグリニッジ標準時)との時差。次の例では、データベースの タイム・ゾーンを太平洋標準時(UTCより8時間遅れ)に設定します。
CREATE DATABASE ... SET TIME_ZONE = '-08:00 ';
■ タイム・ゾーン・リージョン。次の例も、データベースのタイム・ゾーンを米国での太 平洋標準時に設定します。
CREATE DATABASE ... SET TIME_ZONE = 'PST ';
有効なリージョン名のリストを参照するには、V$TIMEZONE_NAMESビューを問い合せ ます。
データベースのタイム・ゾーンが関連するのは、TIMESTAMPWITHLOCALTIMEZONE列の
みです。Oracleでは、TIMESTAMP WITH LOCAL TIME ZONEのデータは、ディスクへの格納
時に、すべて正規化されます。SETTIME_ZONE句を指定しない場合は、サーバーのオペ レーティング・システムのタイム・ゾーンが使用されます。オペレーティング・システムの タイム・ゾーンが有効なOracleタイム・ゾーンでない場合、データベースのタイム・ゾー ンはUTCにデフォルト設定されます。 Oracleのタイム・ゾーン情報は、
ftp://elsie.nci.nih.gov/pub/で使用可能な公開タイム・ゾーンから導出されます。
Oracleのタイム・ゾーン情報には、このサイトから入手可能な最新のタイム・ゾーン・デー
タが反映されていない場合があります。
データベース作成後は、ALTER DATABASE SET TIME_ZONE文を発行してから、データベー スを停止し、再起動することで、タイム・ゾーンを変更できます。次の例では、データベー スのタイム・ゾーンをロンドン時間に設定します。
ALTER DATABASE SET TIME_ZONE = 'Europe/London ';
関連項目 関連項目関連項目
関連項目: TO_TIMESTAMP_TZ関数とALTER SESSION文の詳細は、
『Oracle9i SQLリファレンス』を参照してください。
日付および時間を指定するパラメータ
データベースのタイム・ゾーンを検索するには、次の例に示すように、DBTIMEZONE関数を 使用します。
SELECT dbtimezone FROM dual;
DBTIME ---08:00
セッションのタイム・ゾーン・パラメータ セッションのタイム・ゾーン・パラメータセッションのタイム・ゾーン・パラメータ
セッションのタイム・ゾーン・パラメータ ユーザー・セッションのタイム・ゾーン・パラ メータを変更するには、ALTERSESSION文を発行します。
■ オペレーティング・システムのローカルのタイム・ゾーン ALTER SESSION SET TIME_ZONE = local;
■ データベースのタイム・ゾーン
ALTER SESSION SET TIME_ZONE = DBTIMEZONE;
■ UTCからの絶対時差
ALTER SESSION SET TIME_ZONE = '-05:00';
■ 指定したリージョンのタイム・ゾーン
ALTER SESSION SET TIME_ZONE = 'America/New_York';
環境変数ORA_SDTZを使用すると、クライアント・セッションのデフォルトのタイム・ゾー ンを設定できます。この変数は、DB_TZ、OS_TZ、タイム・ゾーン・リージョンまたは数値 タイム・ゾーン・オフセットなどの入力を取得します。ORA_SDTZがDB_TZに設定されてい る場合、セッションのタイム・ゾーンは、データベースのタイム・ゾーンと同じになりま す。ORA_SDTZがOS_TZに設定されている場合、セッションのタイム・ゾーンは、オペ レーティング・システムのタイム・ゾーンと同じになります。 ORA_SDTZが無効なOracleタ イム・ゾーンに設定されている場合は、オペレーティング・システムのタイム・ゾーンが、
セッションのデフォルト・タイム・ゾーンとして使用されます。オペレーティング・システ ムのタイム・ゾーンが有効なOracleタイム・ゾーンでない場合、セッションのタイム・
ゾーンは、UTCにデフォルト設定されます。ユーザー・セッションのタイム・ゾーンを検 索するには、次の例に示すように、SESSIONTIMEZONE関数を使用します。
SELECT sessiontimezone FROM dual;
SESSIONTIMEZONE -08:00 関連項目 関連項目関連項目
関連項目: 12-17ページ「タイム・ゾーン・データのカスタマイズ」
カレンダ定義 カレンダ定義 カレンダ定義 カレンダ定義
この項の内容は、次のとおりです。
■ カレンダ書式
■ NLS_CALENDAR
カレンダ書式 カレンダ書式 カレンダ書式 カレンダ書式
次のカレンダ情報が地域別に格納されます。
■ 週の最初の曜日
■ 年の最初の暦週
■ 1年の日数と月数
■ 紀元の年
週の最初の曜日 週の最初の曜日 週の最初の曜日 週の最初の曜日
一部の文化では、日曜日を最初の曜日とみなしています。また、月曜日を最初の曜日とみな す文化もあります。ドイツのカレンダは、表3-5に示すように月曜日から始まります。
週の最初の曜日は、NLS_TERRITORYパラメータによって決定されます。
表 表表
表 3-5 ドイツのカレンダの例ドイツのカレンダの例ドイツのカレンダの例ドイツのカレンダの例: 1998年年年年3月月月月
Mo Di Mi Do Fr Sa So
- - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - -
-関連項目関連項目関連項目
関連項目: 3-13ページ「NLS_TERRITORY」
カレンダ定義
年の最初の暦週 年の最初の暦週 年の最初の暦週 年の最初の暦週
一部の国では、週番号を使用してスケジューリング、計画および会計処理を行います。
Oracleでは、この規則をサポートしています。 ISO規格では、暦年の週番号とは異なる週番
号を使用できます。たとえば、1988年1月1日は、1987年のISO週番号53になります。
ISOの週は、常に月曜日に始まって日曜日に終わります。
■ 1月1日が金曜日、土曜日または日曜日の場合、1月1日を含むISOの週は、その週の大 半の日が前年に属するため、前年の最後の週になります。
■ 1月1日が月曜日、火曜日、水曜日または木曜日の場合は、1月1日を含むISOの週は、
その週の大半の日が新しい年に属するため、新しい年の最初の週になります。
ISO規格をサポートするために、OracleにはIW日付書式要素が用意されています。この書 式要素はISO週番号を戻します。
表3-6に、暦年の第1週に1月1日を含めて4日以上含まれている場合の例を示します。 1月 1日を含む週は、1998年のISOの第1週となります。
表3-7に、暦年の第1週に含まれる日付が1月1日を含めて3日以内の場合の例を示します。
1月1日を含む週は1998年のISOの第53週となり、次の週は1999年のISOの第1週とな ります。
表 表表
表 3-6 年の年の年の年のISOの第の第の第の第1週週週週: 例例例例1、、、、1998年年年年1月月月月 月
月月
月 火火火火 水水水水 木木木木 金金金金 土土土土 日日日日 ISO週週週週
- - - 1 2 3 4 1998年のISOの第1週
5 6 7 8 9 10 11 1998年のISOの第2週
12 13 14 15 16 17 18 1998年のISOの第3週
19 20 21 22 23 24 25 1998年のISOの第4週
26 27 28 29 30 31 - 1998年のISOの第5週
表 表表
表 3-7 年の年の年の年のISOの第の第の第の第1週週週週: 例例例例2、、、、1999年年年年1月月月月 月
月月
月 火火火火 水水水水 木木木木 金金金金 土土土土 日日日日 ISO週週週週
- - - - 1 2 3 1998年のISOの第53週
4 5 6 7 8 9 10 1999年のISOの第1週
11 12 13 14 15 16 17 1999年のISOの第2週
18 19 20 21 22 23 24 1999年のISOの第3週
25 26 27 28 29 30 31 1999年のISOの第4週
年の最初の暦週は、NLS_TERRITORYパラメータによって決定されます。
1 年の日数と月数 年の日数と月数 年の日数と月数 年の日数と月数
Oracleでは、デフォルトのグレゴリオ暦の他に、次の6つの暦法をサポートしています。
■ Japanese Imperial(日本の元号暦)-月数と日数はグレゴリオ暦と同じですが、年は各
元号ごとに始まります。
■ ROC Official(台湾暦)-月数と日数はグレゴリオ暦と同じですが、年は台湾の建国年
から始まります。
■ Persian(ペルシャ暦)-最初の6か月の日数はそれぞれ31日、次の5か月はそれぞれ30
日、最後の月は29日または30日(うるう年)です。
■ Thai Buddha(タイ仏教暦)-仏教のカレンダを使用します。
■ Arabic Hijrah(イスラム歴)-月数は12で、日数は354または355です。
■ English Hijrah(英語版イスラム歴)-月数は12で、日数は354または355です。
暦法は、NLS_CALENDARパラメータで指定します。
紀元の年 紀元の年 紀元の年 紀元の年
イスラム暦は、ヒジュラ紀元の年から始まります。
日本の元号暦は、天皇が即位した最初の年から始まります。たとえば、1998年は平成10年 になります。ただし、日本では、グレゴリオ暦も広く理解されているので、1998年を表現す るために98年と平成10年の両方が使用されます。