Postgresでは、to_char()
は、最初の引数を文字列に変換するデータ型フォーマット関数です。
文字列の形式は、2番目の引数によって決定されます。
to_char()
関数を使用して、次の変換を行うことができます。
- 文字列へのタイムスタンプ
- 文字列への間隔
- 整数から文字列へ
- 文字列の実数/倍精度
- 数値から文字列
構文
構文は次のようになります:
to_char(timestamp, text)
to_char(interval, text)
to_char(int, text)
to_char(double precision, text)
to_char(numeric, text)
ここで、最初の引数は変換する値(リストされているデータ型のいずれか)とtext
は、最初の引数をフォーマットするためのフォーマット文字列です。
例
日付値をフォーマットする例を次に示します。
SELECT to_char(date '2020-12-25', 'Day, DD Month YYYY');
結果:
Friday , 25 December 2020
この場合、フォーマット文字列Day, DD Month YYYY
to_char()
によって文字列として返されるときに日付がどのようにフォーマットされるかを決定します 。
テンプレートパターン
フォーマット文字列は、1つ以上のテンプレートパターンで構成されます 。
前の例では、フォーマット文字列はDay, DD Month YYYY
でした。 。したがって、次のテンプレートパターンで構成されています。
Day
-
DD
Month
-
YYYY
多かれ少なかれテンプレートパターンを使用できたはずで、出力は異なっていたでしょう。
たとえば、次のようにすることができます。
SELECT to_char(date '2020-12-25', 'Day');
結果:
Friday
あるいは、私のフォーマット文字列は、まったく異なる一連のテンプレートパターンで構成されている可能性があります。
例:
SELECT to_char(date '2020-12-25', 'Dy, DD Mon YY');
結果:
Fri, 25 Dec 20
テンプレートパターン修飾子
フォーマット文字列にテンプレートパターン修飾子を追加することもできます。
結果は、使用する修飾子によってわずかに異なります。
たとえば、次の例では、月の日を序数として示しています。
SELECT to_char(date '2020-12-25', 'Day, DDth Month YYYY');
結果:
Friday , 25 December 2020
これは最初の例と同じですが、違いはth
を追加したことです。 DD
の接尾辞としてのテンプレート修飾子 テンプレートパターン。これにより、月の日に序数のサフィックスが追加されます。
したがって、最終的に25日になります 25だけでなく 。
テンプレート修飾子の効果を強調するために、さまざまな値に適用した場合の外観を次に示します。
SELECT
to_char(date '2020-12-01', 'DDth') AS "1",
to_char(date '2020-12-02', 'DDth') AS "2",
to_char(date '2020-12-03', 'DDth') AS "3",
to_char(date '2020-12-04', 'DDth') AS "4";
結果:
1 | 2 | 3 | 4 ------+------+------+------ 01st | 02nd | 03rd | 04th
必要に応じて、先行ゼロを抑制するために別の修飾子を追加できます。
SELECT
to_char(date '2020-12-01', 'FMDDth') AS "1",
to_char(date '2020-12-02', 'FMDDth') AS "2",
to_char(date '2020-12-03', 'FMDDth') AS "3",
to_char(date '2020-12-04', 'FMDDth') AS "4";
結果:
1 | 2 | 3 | 4 -----+-----+-----+----- 1st | 2nd | 3rd | 4th
この場合、FM
を追加しました これは「フィルモード」用です。この修飾子は、先行ゼロとパディングブランクを抑制します。
数値
前の例は数値にも適用できます。
ただし、数値を使用する場合は、D
を交換する必要があります 9
のいずれかで または0
。
SELECT
to_char(1, '9th') AS "1",
to_char(2, '9th') AS "2",
to_char(3, '9th') AS "3",
to_char(4, '9th') AS "4";
結果:
1 | 2 | 3 | 4 ------+------+------+------ 1st | 2nd | 3rd | 4th
テンプレートパターンと修飾子のリスト
使用できる実際のテンプレートパターンは、日付/時刻の値と数値のどちらをフォーマットするかによって異なります。
使用可能なテンプレートパターンの完全なリストについては、以下を参照してください:
- 日付/時刻フォーマット用のテンプレートパターンと修飾子
- 数値フォーマット用のテンプレートパターンと修飾子