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

PostgreSQLの日付から日、月、年を取得する3つの関数

    PostgreSQLには、日付から日、月、年を取得するためのいくつかの方法が用意されています。

    すぐに頭に浮かぶ3つの機能は次のとおりです。 DATE_PART()EXTRACT() 、およびTO_CHAR()

    EXTRACT()

    EXTRACT() function 年、月、時、分などのサブフィールドを日付/時刻の値から取得します。

    例:

    SELECT EXTRACT(YEAR FROM date '2035-10-30');

    結果:

    2035

    この関数を3回別々に呼び出すことで、別々のフィールドに異なる日付部分を返すことができます。

    SELECT 
        EXTRACT(DAY FROM date '2035-10-30') AS "Day",
        EXTRACT(DOW FROM date '2035-10-30') AS "DOW",
        EXTRACT(DOY FROM date '2035-10-30') AS "DOY",
        EXTRACT(MONTH FROM date '2035-10-30') AS "Month",
        EXTRACT(YEAR FROM date '2035-10-30') AS "Year";

    結果:

     Day | DOW | DOY | Month | Year 
    -----+-----+-----+-------+------
      30 |   2 | 303 |    10 | 2035

    ここでは、日付、曜日、曜日、月、および年を日付から返しました。

    その他の例、およびこの関数によって返されるフィールド名のリストについては、PostgreSQLでのExtract()の動作を参照してください。

    DATE_PART()

    DATE_PART() 関数はEXTRACT()と同等です 、ただし構文は少し異なります。

    SELECT 
        DATE_PART('DAY', date '2035-10-30') AS "Day",
        DATE_PART('DOW', date '2035-10-30') AS "DOW",
        DATE_PART('DOY', date '2035-10-30') AS "DOY",
        DATE_PART('MONTH', date '2035-10-30') AS "Month",
        DATE_PART('YEAR', date '2035-10-30') AS "Year";

    結果:

     Day | DOW | DOY | Month | Year 
    -----+-----+-----+-------+------
      30 |   2 | 303 |    10 | 2035

    この関数では、最初の引数を文字列として指定し、FROMの代わりにコンマで2つの引数を区切る必要があります。 キーワード。

    TO_CHAR()

    TO_CHAR() 関数は、より多様な出力を提供するために使用できるという点で、より柔軟です。たとえば、この関数を使用して、日、月、年をすべて1つのフィールドに返すことができます。

    SELECT TO_CHAR(date '2045-12-02', 'Day, DDth Month YYYY');

    結果:

     Saturday , 02nd December  2045

    fmを使用できます 適用される可能性のあるパディングを抑制するためのテンプレート修飾子:

    SELECT TO_CHAR(date '2165-04-01', 'fmDay, fmDDth fmMonth YYYY');

    結果:

     Monday, 1st April 2165

    thにも注意してください テンプレート修飾子は、stかどうかを知るのに十分賢いです 、ndrd 、またはth 追加する必要があります。

    TO_CHAR()へのさまざまな呼び出しを使用する例を次に示します。 さまざまな日付部分を別々のフィールドに出力するには:

    SELECT 
        TO_CHAR(date '2165-04-01', 'fmDay') AS "Day",
        TO_CHAR(date '2165-04-01', 'fmDD') AS "DD",
        TO_CHAR(date '2165-04-01', 'fmMonth') AS "Month",
        TO_CHAR(date '2165-04-01', 'YYYY') AS "YYYY";

    結果:

      Day   | DD | Month | YYYY 
    --------+----+-------+------
     Monday | 1  | April | 2165

    1. SQLを使用して例外のあるORDERBY句を作成する方法

    2. バインド変数を使用してテーブルと列の名前を動的に渡す

    3. MariaDBで文字セットと列の照合を設定する

    4. T-SQLで(時間なしで)現在の日付を取得する方法