sql >> Databáze >  >> RDS >> PostgreSQL

Jak make_interval() funguje v PostgreSQL

V PostgreSQL, make_interval() Funkce vytvoří interval z polí roky, měsíce, týdny, dny, hodiny, minuty a sekundy.

Zadáte roky, měsíce, týdny, dny, hodiny, minuty a/nebo sekundy a vrátí se interval v intervalu datový typ.

Syntaxe

Funkce má následující syntaxi:

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)

Příklad

Zde je příklad k demonstraci.

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

Výsledek:

1 year 2 mons 25 days 05:06:07

V tomto příkladu jsem uvedl všech sedm argumentů.

Toto je tradiční mechanismus pro předávání argumentů funkcím v PostgreSQL a nazývá se to „poziční zápis“.

Při použití pozičního zápisu jsou všechny argumenty zadány v pořadí.

Pojmenovaná notace

Zde je příklad použití pojmenovaného zápisu.

SELECT make_interval(days => 12);

Výsledek:

12 days

V tomto příkladu používám pojmenovanou notaci, abych uvedl pouze jeden argument. To mi ušetří nutnost zadávat všechny argumenty, jen abych specifikoval počet dní.

Všechny argumenty jsou ve výchozím nastavení nula, takže jejich vynechání nemá žádný nepříznivý dopad.

Zde je to, co se stane, když nepoužiji pojmenovanou notaci při zadávání pouze jednoho argumentu.

SELECT make_interval(12);

Výsledek:

12 years

Předpokládalo se, že mám na mysli 12 let.

Dobrá věc na pojmenované notaci je, že můžete poskytnout tolik argumentů, kolik potřebujete, a nic víc.

Například:

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

Výsledek:

10 mons 5 days 00:47:00

Starší pojmenovaný zápis

Starší verze Postgresu používaly mírně odlišnou syntaxi pro pojmenovanou notaci. Tato syntaxe používá := místo => .

Příklad:

SELECT make_interval(days := 12);

Výsledek:

12 days

Od Postgresu 12 tato syntaxe stále funguje pro zpětnou kompatibilitu.

Týdny a dny

U intervalů Postgres jsou týdny reprezentovány jako dny. Pokud tedy zadáte weeks argument, výsledek bude za dny.

SELECT make_interval(weeks => 2);

Výsledek:

14 days

Pokud tedy zadáte také days argument, bude přidán ke dnům vytvořeným weeks argument.

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

Výsledek:

17 days

Styl výstupu intervalu

V Postgresu lze výstupní formát intervalového typu nastavit na jeden z následujících čtyř intervalových stylů:

  • sql_standard
  • postgres
  • postgres_verbose
  • iso_8601

Můžete to nastavit pomocí SET intervalstyle . Výchozí hodnota je postgres formát.

Všechny předchozí příklady používají výchozí formát (postgres ).

Zde je příklad, který demonstruje výstup make_interval() při použití různých výstupních stylů.

sql_standard

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

Výsledek:

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

postgres

Toto je výchozí nastavení.

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

Výsledek:

1 rok 2 po 25 dní 05:06:07

postgres_verbose

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

Výsledek:

@ 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);

Výsledek:

P1Y2M25DT5H6M7S

  1. Nastavte hodnotu v závislosti na grafu Helm

  2. PDO::fetchAll vs. PDO::fetch ve smyčce

  3. 3 způsoby, jak zjistit, zda je sloupec vypočítaným sloupcem na serveru SQL

  4. Příklady POWER() v SQL Server