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

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

    PostgreSQLでは、make_interval() 関数は、年、月、週、日、時間、分、秒のフィールドから間隔を作成します。

    年、月、週、日、時間、分、秒のフィールドを指定すると、間隔で間隔が返されます。 データ型。

    構文

    この関数の構文は次のとおりです。

    make_interval(years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days int DEFAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0)

    実例を示します。

    SELECT make_interval(1, 2, 3, 4, 5, 6, 7);

    結果:

    1 year 2 mons 25 days 05:06:07

    この例では、7つの引数すべてを提供しました。

    これは、PostgreSQLの関数に引数を渡すための従来のメカニズムであり、「位取り記数法」と呼ばれます。

    位置表記を使用する場合、すべての引数が順番に指定されます。

    名前付き表記

    名前付き表記を使用した例を次に示します。

    SELECT make_interval(days => 12);

    結果:

    12 days

    この例では、引数を1つだけ指定するために、名前付き表記を使用しています。これにより、日数を指定するだけで、すべての引数を入力する必要がなくなります。

    すべての引数はデフォルトでゼロに設定されているため、省略しても悪影響はありません。

    引数を1つだけ指定するときに名前付き表記を使用しないと、次のようになります。

    SELECT make_interval(12);

    結果:

    12 years

    私は12年を意味すると仮定しました。

    名前付き表記の良いところは、必要な数の引数を指定でき、それ以上は指定できないことです。

    例:

    SELECT make_interval(months => 10, days => 5, mins => 47);

    結果:

    10 mons 5 days 00:47:00

    レガシー名前付き表記

    古いバージョンのPostgresは、名前付き表記にわずかに異なる構文を使用していました。この構文は:=を使用します =>の代わりに 。

    例:

    SELECT make_interval(days := 12);

    結果:

    12 days

    Postgres 12の時点でも、この構文は下位互換性のために機能します。

    週と日

    Postgres間隔では、週は日として表されます。したがって、weeksを指定すると 引数、結果は数日で表示されます。

    SELECT make_interval(weeks => 2);

    結果:

    14 days

    したがって、daysも指定すると 引数、それはweeksによって生成された日に追加されます 引数。

    SELECT make_interval(weeks => 2, days => 3);

    結果:

    17 days

    インターバル出力スタイル

    Postgresでは、間隔タイプの出力形式を次の4つの間隔スタイルのいずれかに設定できます。

    • sql_standard
    • postgres
    • postgres_verbose
    • iso_8601

    これは、SET intervalstyleを使用して設定できます 。デフォルトはpostgres フォーマット。

    前の例はすべてデフォルトの形式(postgres)を使用しています 。

    make_interval()の出力を示す例を次に示します。 異なる出力スタイルを使用する場合。

    sql_standard

    SET intervalstyle = 'sql_standard';
    SELECT make_interval(1, 2, 3, 4, 5, 6, 7);

    結果:

    +1-2 +25 +5:06:07

    postgres

    これがデフォルト設定です。

    SET intervalstyle = 'postgres';
    SELECT make_interval(1, 2, 3, 4, 5, 6, 7);

    結果:

    1年2ヶ月25日05:06:07

    postgres_verbose

    SET intervalstyle = 'postgres_verbose';
    SELECT make_interval(1, 2, 3, 4, 5, 6, 7);

    結果:

    @ 1 year 2 mons 25 days 5 hours 6 mins 7 secs

    iso_8601

    SET intervalstyle = 'iso_8601';
    SELECT make_interval(1, 2, 3, 4, 5, 6, 7);

    結果:

    P1Y2M25DT5H6M7S

    1. MySQL-テーブルの作成中に一緒に使用された場合のPRIMARYKEY、UNIQUE KEY、およびKEYの意味

    2. 値を設定するためのPostgresql挿入トリガー

    3. MariaDB CONNECTION_ID()の説明

    4. コマンドラインからMySQLに接続する方法