7 書式モデル

この章では、文字列に格納される日時データおよび名前データの書式モデルについて説明します。

この章の内容は次のとおりです。

書式モデルの概要

書式モデルは、文字列に格納されるDATETIMEデータやNUMBERデータの書式を記述する文字リテラルです。文字列を日時または数値に変換する場合、書式モデルは文字列の変換方法を指定します。

関連項目:

書式モデルの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

数値書式モデル

次の場所で数値書式モデルを使用できます。

  • NUMBERデータ型の値をVARCHAR2データ型の値に変換するTO_CHARファンクション

  • CHARまたはVARCHAR2データ型の値をNUMBERデータ型に変換するTO_NUMBERファンクション

数値書式要素

数値書式モデルは、1つ以上の数値書式要素で構成されます。次の表に、数値書式モデルの要素を示します。

表7-1 数値書式の要素

要素 説明

, (カンマ)

9,999

指定した位置にカンマを戻します。1つの数値書式モデルに複数のカンマを指定できます。

制限:

  • 数値書式モデルは、カンマ要素で始めることはできません。

  • 数値書式モデルでは、カンマを小数点文字やピリオドの右側に指定できません。

. (ピリオド)

99.99

指定した位置に小数点(ピリオド(.))を戻します。

制限事項: 1つの数値書式モデルには1つのピリオドのみ指定できます。

$

$9999

値の前にドル記号を付けて戻します。

0

0999

9990

先行0(ゼロ)を戻します。

後続0(ゼロ)を戻します。

9

9999

指定された桁数の値を戻します。正の場合は先行空白が含まれ、負の場合は先行マイナスが含まれます。先行0(ゼロ)は空白ですが、0(ゼロ)値の場合は固定小数点数の整数部分に0(ゼロ)を戻します。

B

B9999

整数部が0(ゼロ)の場合、書式モデル内の0(ゼロ)にかかわらず、固定小数点数の整数部に対して空白を戻します。

C

C999

指定した位置にISO通貨記号(NLS_ISO_CURRENCYパラメータの現在の値)を戻します。

D

99D99

指定した位置に小数点文字(NLS_NUMERIC_CHARACTERパラメータの現在の値)を戻します。デフォルトはピリオド(.)です。

制限事項: 1つの数値書式モデルには1つの小数点文字のみ指定できます。

EEEE

9.9EEEE

科学表記法で値を戻します。

G

9G999

指定した位置に桁区切り(NLS_NUMERIC_CHARACTERパラメータの現在の値)を戻します。単一の数値書式モデルに複数の桁区切りを指定できます。

制限事項: 数値書式モデルにおいて、桁区切りは小数点文字やピリオドの右側に指定できません。

L

L999

指定した位置にローカル通貨記号(NLS_CURRENCYパラメータの現在の値)を戻します。

MI

9999MI

負の値の後に負の符号(-)を戻します。

正の値の後に空白を戻します。

制限事項: 書式要素MIは、数値書式モデルの最後の位置にのみ指定できます。

PR

9999PR

山カッコ<>の中に負の値を戻します。

正の値の前後に空白を付けて戻します。

制限事項: 書式要素PRは、数値書式モデルの最後の位置にのみ指定できます。

RN

rn

RN

rn

大文字のローマ数字で値を戻します。

小文字のローマ数字で値を戻します。

値は1から3999の整数となります。

S

S9999

9999S

負の値の前に負の符号(-)を戻します。

正の値の前に正の符号(+)を戻します。

負の値の後に負の符号(-)を戻します。

正の値の後に正の符号(+)を戻します。

制限事項: 書式要素Sは、数値書式モデルの最初または最後の位置にのみ指定できます。

TM

TM

テキストの最小数値書式モデルは、文字の最小数を(10進出力で)戻します。この要素の大文字と小文字は区別されません。

デフォルトはTM9で、出力が64文字を超えないかぎり、固定表記法で数値を戻します。戻り値が64文字を超える場合、Oracle Databaseは自動的に科学表記法で文字数を戻します。

制限:

  • この要素の前に他の要素を指定することはできません。

  • この要素の後には、9、E(1つ)またはe(1つ)のみを指定できます。次の文は、エラーを戻します。

    SELECT TO_CHAR(1234, 'TM9e') FROM DUAL;

U

U9999

指定した位置にユーロ(または他の)第2通貨記号(NLS_DUAL_CURRENCYパラメータの現在の値によって決定される)を戻します。

V

999V99

値を10のn乗にして戻します(必要に応じて数値を丸めます)。ここで、nVの後の9の数です。

X

XXXX

xxxx

指定の桁数の16進数値を戻します。指定した値が整数でない場合、Oracle Databaseはその値を整数に丸めます。

制限:

  • この要素は、正の値または0(ゼロ)のみを受け入れます。負の値の場合、エラーを戻します。

  • この要素の前には、0(先行0(ゼロ)を戻す)またはFMのみを指定できます。その他の要素の場合、エラーを戻します。0(ゼロ)またはFMをXと同時に指定しないと、戻り値の前に常に空白が1つ追加されます。FM書式モデル修飾子の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

関連項目:

数値書式モデルの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。

日時書式モデル

次の場所で日時書式モデルを使用できます。

  • デフォルト日時書式以外の文字列をDATETIME値に変換するTO_CHARTO_DATETO_TIMESTAMPTO_TIMESTAMP_TZTO_YMINTERVALおよびTO_DSINTERVAL日時ファンクション

  • デフォルト日時書式以外の書式のDATETIME値を文字列に変換するTO_CHARファンクション

日時書式要素

日時書式モデルは、1つ以上の日時書式要素で構成されます。次の表に、日時書式モデルの要素を示します。

表7-2 日時書式要素

要素 TO_*日時ファンクションで指定できるか 説明
-
/
,
.
;
:
"text"

Yes

句読点と引用符付きテキストは、結果で複製されます。

AD
A.D.

Yes

ピリオド付き/なしで西暦を示します。

AM
A.M.

Yes

ピリオド付き/なしで子午線インジケータを示します。

BC
B.C.

Yes

ピリオド付き/なしで紀元前を示します。

CC
SCC

No

世紀。

  • 4桁の年の下2桁が01から99(01および99を含む)の場合、世紀はその年の上2桁に1を加えた値になります。

  • 4桁の年の下2桁が00の場合、世紀はその年の上2桁と等しい値になります。

たとえば、2002は21を戻し、2000は20を戻します。

D

Yes

週における日(1から7)。この要素はセッションのNLS地域に依存します。

DAY

Yes

曜日。

DD

Yes

月における日(1から31)。

DDD

Yes

年における日(1から366)。

DL

Yes

長い日付書式で値を戻します。これは、NLS_DATE_FORMATパラメータの現在の値によって決定される、Oracle DatabaseのDATEの書式を拡張したものです。日付の構成要素(曜日や月など)の表示が、NLS_TERRITORYパラメータおよびNLS_LANGUAGEパラメータによって決まるようにします。たとえば、AMERICAN_AMERICAロケールでは、これは書式'fmDay, Month dd, yyyy'を指定することと同じです。GERMAN_GERMANYロケールでは、'fmDay, dd. Month yyyy'形式で指定したのと同じです。

制限: この書式は、TS要素でのみ、空白で区切って指定可能です。

DS

Yes

短い日付書式の値を戻します。日付の構成要素(曜日や月など)の表示が、NLS_TERRITORYパラメータおよびNLS_LANGUAGEパラメータによって決まるようにします。たとえば、AMERICAN_AMERICAロケールでは、'MM/DD/RRRR'形式で指定したのと同じです。ENGLISH_UNITED_KINGDOMロケールでは、'DD/MM/RRRR'形式で指定したのと同じです。

制限: この書式は、TS要素でのみ、空白で区切って指定可能です。

DY

Yes

曜日の省略形。

E

Yes

年号(日本の元号暦、台湾暦およびタイ仏教暦)の省略形。

EE

Yes

年号(日本の元号暦、台湾暦およびタイ仏教暦)の完全形。

FF [1..9]

Yes

小数部。基数は出力されません。基数文字の追加には、X書式要素を使用します。FFの後に1から9の数字を設定して、戻される日時値のミリ秒部分の桁数を指定します。数字を指定しない場合は、日時データ型に指定された精度またはデータ型のデフォルトの精度が使用されます。タイムスタンプ書式および期間書式では有効ですが、DATE書式では有効ではありません。

例: 'HH:MI:SS.FF'

SELECT TO_CHAR(SYSTIMESTAMP, 'SS.FF3') from dual;

FM

Yes

先行および後続する空白を持たない値を返します。

FM書式モデル修飾子の詳細は、『Oracle Database SQL言語リファレンス』参照

FX

Yes

文字データと書式モデルの完全一致を必要とします。

FX書式モデル修飾子の詳細は、『Oracle Database SQL言語リファレンス』参照

HH
HH12

Yes

1日の時間(1から12)。

HH24

Yes

1日の時間(0から23)。

IW

No

ISO規格に基づく、年における週(1から52または1から53)。

IYY
IY
I

No

ISO年の最後の3桁、2桁または1桁。

IYYY

No

ISO規格に基づく4桁の年。

J

Yes

ユリウス日(紀元前4712年1月1日からの経過日数)。Jで指定する数字は、整数である必要があります。

MI

Yes

分(0から59)。

MM

Yes

月(01から12。1月は01)。

MON

Yes

月の名前の省略形。

MONTH

Yes

月の名前。

PM
P.M.

Yes

ピリオド付き/なしで子午線インジケータを示します。

Q

No

年の四半期(1、2、3、4。1月から3月は1)。

RM

Yes

ローマ数字による月(IからXII。1月はI)。

RR

Yes

2桁のみを使用して、21世紀に20世紀の日付を格納できます。

RR日時書式要素の詳細は、『Oracle Database SQL言語リファレンス』参照

RRRR

Yes

年。4桁または2桁で入力できます。2桁の場合、RRの場合と同様の結果が戻ります。この機能を使用しない場合は、4桁の年を入力します。

SS

Yes

秒(0から59)。

SSSSS

Yes

午前0時から経過した秒(0から86399)。

TS

Yes

短い時間書式で値を戻します。時間の構成要素(時間や分など)の表示が、NLS_TERRITORY初期化パラメータおよびNLS_LANGUAGE初期化パラメータによって決まるようにします。

制限: この書式は、DLまたはDS要素でのみ、空白で区切って指定可能です。

TZD 

Yes

夏時間の情報。TZDの値は、夏時間の情報を持つタイムゾーン文字列の省略形です。TZRで指定した地域と対応している必要があります。タイムスタンプ書式および期間書式では有効ですが、DATE書式では有効ではありません。

例: PST(アメリカ太平洋標準時)、PDT(アメリカ太平洋夏時間)。

TZH

Yes

タイムゾーンの時間。(TZM書式要素を参照。)タイムスタンプ書式および期間書式では有効ですが、DATE書式では有効ではありません。

例: 'HH:MI:SS.FFTZH:TZM'

TZM

Yes

タイムゾーンの分。(TZH書式要素を参照。)タイムスタンプ書式および期間書式では有効ですが、DATE書式では有効ではありません。

例: 'HH:MI:SS.FFTZH:TZM'

TZR

Yes

タイムゾーン地域の情報。値は、データベースでサポートされるタイムゾーン地域である必要があります。タイムスタンプ書式および期間書式では有効ですが、DATE書式では有効ではありません。

例: US/Pacific

WW

No

年における週(1から53)。第1週はその年の1月1日で始まり、1月7日で終了します。

W

No

月における週(1から5)。第1週はその月の1日で始まり、7日で終了します。

X

Yes

ローカル基数文字。

例: 'HH:MI:SSXFF'

Y,YYY

Yes

指定の位置にカンマを付けた年。

YEAR
SYEAR

No

スペルアウトした年。Sの場合、紀元前の日付の先頭にマイナス記号(-)が付加されます。

YYYY
SYYYY

Yes

4桁の年。Sの場合、紀元前の日付の先頭にマイナス記号が付加されます。

YYY
YY
Y

Yes

年の最後の3桁、2桁または1桁。

関連項目:

日時書式モデルの詳細は、『Oracle Database SQL言語リファレンス』を参照してください。