DATE_FORMATコマンドは、DATETIME
、TIMESTAMP
、TIMESTAMP_TZ
、TIMESTAMP_LTZ
、DSINTERVAL
またはYMINTERVAL
のデータ型を持つオブジェクトの定義に、書式テンプレートを割り当てるコマンドです。
日時書式テンプレートは、文字列に格納された日時データの書式を記述するテンプレートです。このテンプレートによりデータベース内の値の内部表現が変更されることはありません。文字列を日付に変換する場合、Oracle OLAPがその文字列をどのように解釈するかがテンプレートで決定されます。
注意: この文は、SQLの日時データ型に対応する日時データ型を持つオブジェクトについてのみ使用できます。OLAP DMLに特有である日付のみのデータ型を持つ時間ディメンションには使用できません。 |
定義に日時書式テンプレートを割り当てるには、最新の定義または現行のセッション中に検討された定義である必要があります。そうでない場合は、最初にCONSIDER文を使用し、現行の定義にする必要があります。
パラメータ
1つ以上の日時書式要素で構成される式で、この式によって現行オブジェクトの値の入力や表示に使用する書式を指定します。テンプレートで指定できる要素については、表9-4「日時の書式要素」を参照してください。テンプレートを作成する際は、次の点に注意してください。
日時書式テンプレートの全長は、22文字を超えることはできません。
入力書式モデルの場合、同じ書式項目は2回指定できません。また、類似した情報を表す書式項目を組み合せることもできません。たとえば、'SYYYY'と'BC'を同一の書式文字列内で使用することはできません。
日時の書式要素には、TO_*
日時ファンクションで使用できないものもあります(表2-7「日時フィールドと値」を参照)。
日時の書式要素であるFF
、TZD
、TZH
、TZM
およびTZR
は、タイムスタンプや期間の書式モデルで使用できますが、元のDATETIME
書式モデルでは使用できません。
日時の書式要素の多くは、特定の長さに満たない場合、空白が追加されます。
templateを省略した場合、現行定義の既存の日付書式テンプレートが削除され、デフォルトの日時書式テンプレートが使用されます。(デフォルトの日時書式テンプレートについては、「デフォルトの日時書式テンプレート」を参照してください。)
表9-4 日時の書式要素
使用上の注意
デフォルトの日時書式テンプレート
デフォルトの日時書式テンプレートは、初期化パラメータNLS_DATE_FORMAT
で明示的に指定されるか、または初期化パラメータNLS_TERRITORY
で暗黙的に指定されます。セッションのデフォルトの日時書式は、ALTER
SESSION
文で変更できます。
Oracleでは、ISO規格に従って、日時書式要素IYYY、IYY、IY、IおよびIWによって返された値が計算されます。
これらの値と日時書式要素YYYY、YYY、YY、YおよびWWによって戻される値の相違点については、『Oracle Databaseグローバリゼーション・サポート・ガイド』の「グローバリゼーション・サポート」の章を参照してください。
RR
日時書式要素は、YY
日時書式要素に似ていますが、より柔軟に、他の世紀に日付の値を格納できます。RR
日時書式要素では、年の下2桁のみを指定することにより、20世紀の日付を21世紀に格納できます。
TO_DATE
ファンクションとYY
日時書式要素を使用する場合、返される年の上2桁は常に、現在の年と同一になります。かわりにRR
日時書式要素を使用する場合、戻り値の世紀は、指定した2桁の年および現在の年の下2桁によって異なります。
詳細は次のとおりです。
指定した2桁の年が00から49である場合、次のようになります。
現在の年の下2桁が00から49の場合、返される年の上2桁は、現在の年と同一になる。
現在の年の下2桁が50から99の場合、返される年の上2桁は、現在の年の上2桁に1を加えた値になる。
指定した2桁の年が50から99である場合、次のようになります。
現在の年の下2桁が00から49の場合、返される年の上2桁は、現在の年の上2桁から1を引いた値になる。
現在の年の下2桁が50から99の場合、返される年の上2桁は、現在の年と同一になる。
表9-5「日時書式要素の接尾辞」に、日時書式要素に追加できる接尾辞を示します。
日付書式要素の接尾辞を使用する際は、次の点に注意してください。
前述の接尾辞のいずれかを日時書式要素に追加する場合、戻り値は必ず英語になります。
日時の接尾辞は、書式の出力にのみ有効です。データベースに日付を挿入するためには使用できません。
一部の日時書式要素の機能は、Oracle Databaseを使用している国や言語によって異なります。たとえば、次に示す日時書式要素は、スペルアウトした値を返します。
MONTH
MON
DAY
DY
BC、AD、B.C.またはA.D.
AM、PM、A.M.またはP.M.
前述の値が返される際に使用される言語は、初期化パラメータNLS_DATE_LANGUAGE
で明示的に指定されるか、または初期化パラメータNLS_LANGUAGE
で暗黙的に指定されます。YEAR
およびSYEAR
の日時書式要素で返される値は常に英語です。
日時書式要素D
は、週の何日目であるか(1から7)を返します。週の第1日目は、初期化パラメータNLS_TERRITORY
で暗黙的に指定されます。
関連項目: グローバリゼーション・サポートの初期化パラメータの詳細は、『Oracle Databaseリファレンス』および『Oracle Databaseグローバリゼーション・サポート・ガイド』を参照してください。 |
スペルアウトした単語、省略形またはローマ数字での大文字の使用方法は、対応する書式要素での大文字の使用方法に従います。たとえば、日時書式要素'DAY'の場合は'MONDAY'、'Day'の場合は'Monday'、'day'の場合は'monday'のように大文字が使用されます。
日時書式テンプレートには、次の文字を含めることができます。
ハイフン、スラッシュ、カンマ、ピリオドおよびコロンなどの句読点
二重引用符で囲んだ文字リテラル
これらの文字は、書式モデル内と同じ位置で戻り値に表示されます。
書式文字列では句読記号文字がある位置に、日付文字列で英数字が見つかった場合、Oracleはエラーを返します。たとえば、次の書式文字列ではエラーが返されます。
TO_CHAR (TO_DATE('0297','MM/YY'), 'MM/YY')
例
例9-75 オブジェクトの日時書式テンプレートの変更
次の文に示すように、デフォルトの日時書式テンプレートがDD_MON_RR
であるとします。
SHOW NLS_DATE_FORMAT DD-MON-RR
また、mydatetime
という変数を定義し、CURRENT_TIMESTAMPの値を割り当てるとします。
DEFINE mydatetime VARIABLE DATETIME mydatetime = CURRENT_TIMESTAMP
mydatetime
の値についてのレポートには、次の値が表示されます。この値は、NLS_DATETIME FORMATの設定で決定された書式を持ちます。次のように指定された順で、日、月および年の値のみが表示されます。
REPORT mydatetime MYDATETIME ----------- 02-FEB-07
ここで、次の文を発行することにより、mydatetime
の日付書式マップを変更します。
CONSIDER mydatetime DATE_FORMAT MON-RRRR-DD-HH24
その結果、mydatetime
の値の表示に、24時間形式の時間が含まれます。
REPORT mydatetime MYDATETIME -------------- FEB-2007-02-10