データ型書式設定関数PostgreSQLの書式設定関数は多彩なデータ型(日付/時刻データ型、整数データ型、浮動小数点数データ型、数値データ型)を整形された文字列に変換したり、整形された文字列を特定のデータ型に変換する強力なツールの一式を提供しています。表9-20にこれらを列挙しています。これら関数は共通の呼び出し規約を踏襲しています。最初の引数は整形される値で2番目の引数は入力書式または出力書式を定義するテンプレートです。単一引数のto_timestamp関数も利用可能です。zoneに変換します。precisionにキャストされます。to_timestamp(1284352323)(to_char用)出力テンプレート文字列には、値に基づいて認識され、適切に整形されたデータで置き換えられるパターンがあります。テンプレートパターンではない全てのテキストは単にそのままコピーされます。同様に、(その他の関数に対し)入力テンプレート文字列では、テンプレートパターンは入力されたデータ文字列で供給される値を特定します。表9-21に、日付/時刻型の値の書式に使用可能なテンプレートパターンを示します。大文字で書き始める短縮形の月名(英語では3文字。小文字での短縮形の月名(英語では3文字。短縮形の大文字での短縮形の曜日名(英語では3文字。大文字で書き始める短縮形の曜日名(英語では3文字。小文字での短縮形の曜日名(英語では3文字。修飾子はどのようなテンプレートパターンに対しても、その振舞いを変更するために適用することができます。FMMonthはFM修飾子の付いたMonthパターンです。表9-22に、日付/時刻書式の修飾子パターンを示します。翻訳モード(lc_time)に基づき、現地語化された日付、月名を表示します。DDSP日付/時刻型書式の使用上の注意事項は次のとおりです。FMはパターンの出力を固定長にするため、先頭にはゼロ、末尾には空白を追加してしまう機能を無効にします。PostgreSQLでは、FMはその次に記述されたものだけを変更します。Oracleでは、FMはそれに続く全ての記述に対して影響し、FM修飾詞の切り替えに応じて繰り返されます。TMには末尾の空白は含まれません。FXオプションがテンプレートが使用されている場合を除き、to_timestampとto_dateは入力文字列の複数の空白スペースを無視します。MON')はエラーを返します。FXはテンプレートの第1項目として指定される必要があります。to_charテンプレートでは、通常のテキストが許され、そのまま出力されます。部分文字列を二重引用符で括ることで、部分文字列にパターン用のキーワードがあったとしても、強制的にリテラルテキストとして解釈させることができます。"YYYY'ではYYYYは年データに置換されてしまいますが、Year内のYは置換されません。to_date、to_number、to_timestampでは、二重引用符で括られた文字の数だけ入力された文字をスキップします。"XX"が指定された場合は2文字がスキップされます。Month\\"'のようにその前にバックスラッシュを付けなければなりません。YYYの様に4桁未満の年書式が指定され、かつ与えられる年が4桁未満だった場合、年は2020年に最も近くなるよう調整されます。95の場合は1995年になります。文字列をtimestamp型もしくはdate型にするYYYY変換は、4桁以上の年数値を処理するとき制限が加えられます。このような場合、数字以外の文字またはYYYYの後にテンプレートを使わなければなりません。しないと年は常に4桁と解釈されます。'YYYYMonDD')のように数字でない区切り符号の使用をお勧めします。文字列からtimestampもしくはdateへの変換において、YYY、YYYY、もしくはY,YYYフィールドが存在するとCC(世紀)フィールドは無視されます。CCがYYもしくはYと共に使用されると、年は(CC-1)*100+YYのように計算されます。ISO週番号と週の曜日番号(グレゴリオ暦の日付とは異なって)はto_timestampとto_dateの2つの方法のうちのひとつで指定できます。年、通年の週番号、週の曜日番号。'IYYY-IW-ID')は、日付2006-10-19を返します。曜日番号を省略した場合、1(月曜日)と想定されます。'IYYY-IDDD')のは、同様2006-10-19を返します。ISO週番号とグレゴリアン暦日のフィールドを混在して使用して日付を構築する試みは無意味なことで、エラーの原因になります。ISO年の文脈によると、"月"、あるいは"月中日付番号"は意味を持ちません。グレゴリオ暦の年の文脈では、ISO週番号は意味を持ちません。グレゴリアンとISOの日付の仕様の混在を避けなければなりません。文字列型からtimestamp型への変換に際し、ミリ秒MSまたはマイクロ秒USの値は小数点の位置の後の秒の桁として使用されます。'SS:MS')は3ミリ秒ではなく300ミリ秒です。0.3と計算されるからです。いうことは、SS:MS書式に対して入力値である12:3、12:30、および12:300は同じミリ秒数を指定します。3ミリ秒数が必要な場合には12:003のようにしなければなりません。12.003秒と計算します。2.021230秒です。...)の曜日番号付けに一致しません。to_char(interval)関数は、HHとHH12により、例えば0時と36時を12とするような、12時間表示の出力をします。HH24はインターバル間で23を超えることが可能な24時間表示の出力をします。表9-23に、数値型の値の書式設定に使用可能なテンプレートパターンを示します。数値型書式の使用上の注意事項は次のとおりです。SG、PL、またはMIで整形された符号は、数値と関連付けられません。Oracleの実装では9の前のMIが置かれてはならず、9の後にMIが置かれることを要求しています。9は9が並んでいる数と同じ桁数の値を出力します。桁が使用可能でない場合、スペースを出力します。THはゼロ未満の値と小数は変換しませんPL、SG、およびTHはPostgreSQLの拡張です。Vは入力値を実質的に10^n乗します。ここでnはVに続く桁数です。EEEE(科学技術表記)は、他の書式パターンや桁と小数点のパターンを除く修飾子との組み合わせで使うことはできず、また必ず書式文字列の最後に位置しなければなりません。(例えば、9.99EEEEは正しい表記となります。)ある修飾子をその動作を変えるために、任意のテンプレートに適用することができます。FM9999はFM修飾子が付いた9999パターンです。表9-24に、数値の書式用の修飾子パターンを示します。999th表9-25に、to_char関数を使用した例をいくつか示します。