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に接続する方法