sql >> データベース >  >> RDS >> PostgreSQL

to_char()がPostgreSQLでどのように機能するか

    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

    テンプレートパターンと修飾子のリスト

    使用できる実際のテンプレートパターンは、日付/時刻の値と数値のどちらをフォーマットするかによって異なります。

    使用可能なテンプレートパターンの完全なリストについては、以下を参照してください:

    • 日付/時刻フォーマット用のテンプレートパターンと修飾子
    • 数値フォーマット用のテンプレートパターンと修飾子


    1. TCLモードでSQLiteクエリ結果をフォーマットする方法

    2. cPanelでMySQLデータベースを作成する方法

    3. MYSQLのサブクエリでLIMITキーワードを使用する代わりに

    4. カンマ区切り値mysqlで検索