バージョンごとのドキュメント一覧

9.8. データ型書式設定関数 #

<title>Data Type Formatting Functions</title>

The <productname>PostgreSQL</productname> formatting functions provide a powerful set of tools for converting various data types (date/time, integer, floating point, numeric) to formatted strings and for converting from formatted strings to specific data types. <xref linkend="functions-formatting-table"/> lists them. These functions all follow a common calling convention: the first argument is the value to be formatted and the second argument is a template that defines the output or input format. PostgreSQLの書式設定関数は多彩なデータ型(日付/時刻データ型、整数データ型、浮動小数点数データ型、数値データ型)を整形された文字列に変換したり、整形された文字列を特定のデータ型に変換する強力なツールの一式を提供しています。 表 9.26にこれらを列挙しています。 これら関数は共通の呼び出し規約を踏襲しています。最初の引数は整形される値で2番目の引数は入力書式または出力書式を定義するテンプレートです。

表9.26 書式設定関数

<title>Formatting Functions</title>

Function 関数

Description 説明

Example(s)

to_char ( timestamp, text ) → text

to_char ( timestamp with time zone, text ) → text

Converts time stamp to string according to the given format. 与えられた書式設定にしたがってタイムスタンプを文字列に変換します。

to_char(timestamp '2002-04-20 17:31:12.66', 'HH12:MI:SS')05:31:12

to_char ( interval, text ) → text

Converts interval to string according to the given format. 与えられた書式設定にしたがって時間間隔を文字列に変換します。

to_char(interval '15h 2m 12s', 'HH24:MI:SS')15:02:12

to_char ( numeric_type, text ) → text

Converts number to string according to the given format; available for <type>integer</type>, <type>bigint</type>, <type>numeric</type>, <type>real</type>, <type>double precision</type>. 与えられた書式設定にしたがって数値を文字列に変換します。integerbigintnumericrealdouble precisionで利用可能です。

to_char(125, '999')125

to_char(125.8::real, '999D9')125.8

to_char(-125.8, '999D99S')125.80-

to_date ( text, text ) → date

Converts string to date according to the given format. 与えられた書式設定にしたがって文字列を日付に変換します。

to_date('05 Dec 2000', 'DD Mon YYYY')2000-12-05

to_number ( text, text ) → numeric

Converts string to numeric according to the given format. 与えられた書式設定にしたがって文字列を数値に変換します。

to_number('12,454.8-', '99G999D9S')-12454.8

to_timestamp ( text, text ) → timestamp with time zone

Converts string to time stamp according to the given format. (See also <function>to_timestamp(double precision)</function> in <xref linkend="functions-datetime-table"/>.) 与えられた書式設定にしたがって文字列をタイムスタンプに変換します。 (表 9.33to_timestamp(double precision)もご覧ください。)

to_timestamp('05 Dec 2000', 'DD Mon YYYY')2000-12-05 00:00:00-05


ヒント

<function>to_timestamp</function> and <function>to_date</function> exist to handle input formats that cannot be converted by simple casting. For most standard date/time formats, simply casting the source string to the required data type works, and is much easier. Similarly, <function>to_number</function> is unnecessary for standard numeric representations. to_timestampto_dateは、単純なキャストでは変換できない入力フォーマットを処理するために存在します。 ほとんどの標準的日付および時刻のフォーマットに対しては、入力文字列を必要なデータ型に単純にキャストすれば動作し、その方がずっと簡単です。 同様に、to_numberも標準的な数値表現に対しては不要です。

In a <function>to_char</function> output template string, there are certain patterns that are recognized and replaced with appropriately-formatted data based on the given value. Any text that is not a template pattern is simply copied verbatim. Similarly, in an input template string (for the other functions), template patterns identify the values to be supplied by the input data string. If there are characters in the template string that are not template patterns, the corresponding characters in the input data string are simply skipped over (whether or not they are equal to the template string characters). to_char用の出力テンプレート文字列には、値に基づいて認識され、適切に整形されたデータで置き換えられるパターンがあります。 テンプレートパターンではない全てのテキストは単にそのままコピーされます。 同様に、(その他の関数用の)入力テンプレート文字列では、テンプレートパターンは入力されたデータ文字列で供給される値を特定します。 テンプレート文字列中にテンプレートパターンではない文字があれば、(テンプレート文字列の文字と同じかどうかにかかわらず)入力文字列データ中の該当文字は単にスキップされます。

<xref linkend="functions-formatting-datetime-table"/> shows the template patterns available for formatting date and time values. 表 9.27に、日付/時刻型の値の書式に使用可能なテンプレートパターンを示します。

表9.27 日付/時刻型の書式テンプレートパターン

<title>Template Patterns for Date/Time Formatting</title>
パターン説明
HH時 (01–12)
HH12時 (01–12)
HH24時 (00–23)
MI分 (00–59)
SS秒 (00–59)
MSミリ秒 (000–999)
USマイクロ秒 (000000–999999)
FF110分の1秒 (0–9)
FF2100分の1秒 (00–99)
FF3ミリ秒 (000–999)
FF410分の1ミリ秒 (0000–9999)
FF5100分の1ミリ秒 (00000–99999)
FF6マイクロ秒 (000000–999999)
SSSS, SSSSS深夜0時からの秒数 (0–86399)
AMamPMまたはpm午前/午後の指定(ピリオドなし)
A.M.a.m.P.M.またはp.m.午前/午後の指定(ピリオドあり)
Y,YYYカンマ付き年(4桁以上)
YYYY年(4桁以上)
YYY年の下3桁
YY年の下2桁
Y年の下1桁
IYYYISO 8601週番号年(4桁以上)
IYYISO 8601週番号年の下3桁
IYISO 8601週番号年の下2桁
IISO 8601週番号年の下1桁
BCbcAD、またはad紀元前後の指定(ピリオドなし)
B.C.b.c.A.D.、またはa.d.紀元前後の指定(ピリオド付き)
MONTH大文字での完全な月名(9文字になるように空白文字を埋める)
Month大文字で書き始める完全な月名(9文字になるように空白文字を埋める)
month小文字での完全な月名(9文字になるように空白文字を埋める)
MON大文字での短縮形の月名(英語では3文字、ローカライズ化された場合は可変長)
Mon大文字で書き始める短縮形の月名(英語では3文字。ローカライズ化された場合は可変長)
mon小文字での短縮形の月名(英語では3文字。ローカライズ化された場合は可変長)
MM月番号(01–12)
DAY大文字での完全な曜日名(9文字になるように空白文字を埋める)
Day大文字で書き始める完全な曜日名(9文字になるように空白文字を埋める)
day小文字での完全な曜日名(9文字になるように空白文字を埋める)
DY短縮形の大文字での短縮形の曜日名(英語では3文字。ローカライズ化された場合は可変長)
Dy大文字で書き始める短縮形の曜日名(英語では3文字。ローカライズ化された場合は可変長)
dy小文字での短縮形の曜日名(英語では3文字。ローカライズ化された場合は可変長)
DDD通年の日にち番号 (001–366)
IDDDISO 8601週番号年の日にち番号(001–371:通年 第1日は最初のISO週の月曜日)
DD月内の日にち番号 (01–31)
D曜日番号、日曜日(1)から土曜日(7)まで
IDISO 8601の曜日番号、月曜日(1)から日曜日(7)まで
W月中の週番号 (1–5)(その月の初日がある週が第1週)
WW年間を通じた週番号 (1–53)(元日のある週が第1週)
IWISO 8601週番号年の年間を通じた週番号(01–53;新年の最初の木曜日がある週が第1週)
CC世紀(2桁。21世紀は2001-01-01から開始)
Jユリウス日(紀元前4714年11月24日現地時間午前零時からの整数による通算経過日。B.7参照)
Q四半期
RM大文字ローマ数字による月(I–XII、Iは1月)
rm小文字ローマ数字による月(i–xii、iは1月)
TZupper case time-zone abbreviation
tzlower case time-zone abbreviation
TZHtime-zoneの時間
TZMtime-zoneの分
OFtime-zone offset from UTC (HH or HH:MM)

Modifiers can be applied to any template pattern to alter its behavior. For example, <literal>FMMonth</literal> is the <literal>Month</literal> pattern with the <literal>FM</literal> modifier. <xref linkend="functions-formatting-datetimemod-table"/> shows the modifier patterns for date/time formatting. どのようなテンプレートパターンに対しても、その振舞いを変更するために修飾子を適用できます。 例えば、FMMonthFM修飾子の付いたMonthパターンです。 表 9.28に、日付/時刻書式の修飾子パターンを示します。

表9.28 日付/時刻書式用のテンプレートパターン修飾子

<title>Template Pattern Modifiers for Date/Time Formatting</title>
修飾子説明
FM接頭辞字詰めモード(先頭の0、およびを空白のパディングを無効)FMMonth
TH接尾辞大文字による序数添え字DDTH、例えば12TH
th接尾辞小文字による序数添え字DDth、例えば12th
FX接頭辞固定書式のグローバルオプション(使用上の注意事項を参照)FX Month DD Day
TM接頭辞翻訳モード(lc_timeに基づき、ローカライズ化された曜日、月名を使います)TMMonth
SP接尾辞スペルモード(未実装)DDSP

Usage notes for date/time formatting: 日付/時刻型書式の使用上の注意事項は次のとおりです。

<xref linkend="functions-formatting-numeric-table"/> shows the template patterns available for formatting numeric values. 表 9.29に、数値の書式設定に使用可能なテンプレートパターンを示します。

表9.29 数値書式用のテンプレートパターン

<title>Template Patterns for Numeric Formatting</title>
パターン説明
9数字の位置(必要ないときは表示しない)
0数字の位置(必要ないときでも表示する)
.(ピリオド)小数点
, (カンマ)千単位で区切る符号
PR負の値の角括弧表示
S符号付き値(ロケールを使用)
L通貨記号(ロケールを使用)
D小数点(ロケールを使用)
Gグループ区切り文字(ロケールを使用)
MI(数値 < 0であれば)指定位置にマイナス記号
PL(数値 > 0であれば)指定位置にプラス記号
SG指定された位置にプラス/マイナス記号
RNローマ数字(入力は1~3999)
THまたはth序数接尾辞
V指定桁でのシフト(注意事項を参照)
EEEE科学技術表記法用の指数

Usage notes for numeric formatting: 数値型書式の使用上の注意事項は次のとおりです。

Certain modifiers can be applied to any template pattern to alter its behavior. For example, <literal>FM99.99</literal> is the <literal>99.99</literal> pattern with the <literal>FM</literal> modifier. <xref linkend="functions-formatting-numericmod-table"/> shows the modifier patterns for numeric formatting. すべてのテンプレートについて、その動作を変えるために、いくつかの修飾子を適用できます。 例えば、FM99.99FM修飾子が付いた99.99パターンです。 表 9.30に、数値の書式用の修飾子パターンを示します。

表9.30 数値の書式用テンプレートパターン修飾子

<title>Template Pattern Modifiers for Numeric Formatting</title>
修飾子説明
FM添え字字詰めモード(末尾の0と空白の埋め字を無効にする)FM99.99
TH添え字大文字による序数添え字999TH
th添え字小文字による序数添え字999th

<xref linkend="functions-formatting-examples-table"/> shows some examples of the use of the <function>to_char</function> function. 表 9.31に、to_char関数を使用した例をいくつか示します。

表9.31 to_charの例

<title><function>to_char</function> Examples</title>
結果
to_char(current_timestamp, 'Day, DD  HH12:MI:SS')'Tuesday  , 06  05:39:18'
to_char(current_timestamp, 'FMDay, FMDD  HH12:MI:SS')'Tuesday, 6  05:39:18'
to_char(current_timestamp AT TIME ZONE 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS"Z"')'2022-12-06T05:39:18Z', ISO 8601 extended format
to_char(-0.1, '99.99')'  -.10'
to_char(-0.1, 'FM9.99')'-.1'
to_char(-0.1, 'FM90.99')'-0.1'
to_char(0.1, '0.9')' 0.1'
to_char(12, '9990999.9')'    0012.0'
to_char(12, 'FM9990999.9')'0012.'
to_char(485, '999')' 485'
to_char(-485, '999')'-485'
to_char(485, '9 9 9')' 4 8 5'
to_char(1485, '9,999')' 1,485'
to_char(1485, '9G999')' 1 485'
to_char(148.5, '999.999')' 148.500'
to_char(148.5, 'FM999.999')'148.5'
to_char(148.5, 'FM999.990')'148.500'
to_char(148.5, '999D999')' 148,500'
to_char(3148.5, '9G999D999')' 3 148,500'
to_char(-485, '999S')'485-'
to_char(-485, '999MI')'485-'
to_char(485, '999MI')'485 '
to_char(485, 'FM999MI')'485'
to_char(485, 'PL999')'+485'
to_char(485, 'SG999')'+485'
to_char(-485, 'SG999')'-485'
to_char(-485, '9SG99')'4-85'
to_char(-485, '999PR')'<485>'
to_char(485, 'L999')'DM 485'
to_char(485, 'RN')'        CDLXXXV'
to_char(485, 'FMRN')'CDLXXXV'
to_char(5.2, 'FMRN')'V'
to_char(482, '999th')' 482nd'
to_char(485, '"Good number:"999')'Good number: 485'
to_char(485.8, '"Pre:"999" Post:" .999')'Pre: 485 Post: .800'
to_char(12, '99V999')' 12000'
to_char(12.4, '99V999')' 12400'
to_char(12.45, '99V9')' 125'
to_char(0.0004859, '9.99EEEE')' 4.86e-04'