Při práci s intervalem datový typ v PostgreSQL, můžete změnit způsob formátování intervalového výstupu.
Máte na výběr ze čtyř formátů, ve kterých mohou být vaše intervaly zobrazeny.
Výstupní formát typu interval lze nastavit na jeden z následujících stylů:
sql_standard
postgres
postgres_verbose
iso_8601
Výchozí styl je postgres
.
Chcete-li změnit formát intervalu, použijte SET intervalstyle
příkaz.
Příklady
Následující příklady demonstrují výstup make_interval()
při použití různých výstupních stylů.
sql_standard
Tento styl odpovídá specifikaci standardu SQL pro řetězce intervalových literálů, pokud hodnota intervalu splňuje omezení standardu (buď pouze rok-měsíc nebo pouze den, bez míchání kladných a záporných složek).
V opačném případě bude výstup vypadat jako standardní řetězec literálu rok-měsíc následovaný řetězcem literálu dne a s přidanými explicitními znaménky, které odlišují intervaly smíšených znamének.
Zde je příklad s použitím roku a měsíce.
SET intervalstyle = 'sql_standard';
SELECT make_interval(years => 1, months => 2);
Výsledek:
1-2
Níže je uveden další příklad. Tentokrát specifikuji roky, měsíce, týdny, dny, hodiny, minuty a sekundy.
SET intervalstyle = 'sql_standard';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Výsledek:
+1-2 +25 +5:06:07
postgres
postgress
je výchozí nastavení.
Tento styl se shoduje s výstupem z vydání Postgresu před verzí 8.4, když DateStyle
parametr byl nastaven na ISO
.
SET intervalstyle = 'postgres';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Výsledek:
1 year 2 mons 25 days 05:06:07
postgres_verbose
Tento styl se shoduje s výstupem z vydání Postgresu před verzí 8.4, když DateStyle
parametr byl nastaven na non-ISO
výstup.
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
Tento styl odpovídá „formátu s označeními“ popsanému v sekci 4.4.3.2 normy ISO 8601.
SET intervalstyle = 'iso_8601';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Výsledek:
P1Y2M25DT5H6M7S