När du arbetar med intervallet datatyp i PostgreSQL kan du ändra hur intervallutgången formateras.
Du kan välja mellan fyra format som dina intervaller kan matas ut i.
Utdataformatet för intervalltypen kan ställas in på en av följande stilar:
sql_standard
postgres
postgres_verbose
iso_8601
Standardstilen är postgres
.
För att ändra ditt intervallformat, använd SET intervalstyle
kommando.
Exempel
Följande exempel visar utdata från make_interval()
när du använder de olika utmatningsstilarna.
sql_standard
Den här stilen överensstämmer med SQL-standardens specifikation för intervallliterala strängar, om intervallvärdet uppfyller standardens begränsningar (antingen endast år-månad eller endast dagtid, utan blandning av positiva och negativa komponenter).
Annars ser utdata ut som en bokstavlig standardsträng för år och månad följt av en bokstavlig sträng dagtid, med explicita tecken tillagda för att otydliga intervall med blandade tecken.
Här är ett exempel som använder år-månad.
SET intervalstyle = 'sql_standard';
SELECT make_interval(years => 1, months => 2);
Resultat:
1-2
Nedan är ett annat exempel. Den här gången anger jag år, månader, veckor, dagar, timmar, minuter och sekunder.
SET intervalstyle = 'sql_standard';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Resultat:
+1-2 +25 +5:06:07
postgres
postgress
är standardinställningen.
Den här stilen matchar utdata från Postgres-utgåvor före 8.4 när DateStyle
parametern sattes till ISO
.
SET intervalstyle = 'postgres';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Resultat:
1 year 2 mons 25 days 05:06:07
postgres_verbose
Den här stilen matchar utdata från Postgres-utgåvor före 8.4 när DateStyle
parametern ställdes till icke-ISO
utdata.
SET intervalstyle = 'postgres_verbose';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Resultat:
@ 1 year 2 mons 25 days 5 hours 6 mins 7 secs
iso_8601
Denna stil matchar "formatet med beteckningar" som beskrivs i avsnitt 4.4.3.2 i ISO 8601-standarden.
SET intervalstyle = 'iso_8601';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Resultat:
P1Y2M25DT5H6M7S