Når du arbejder med intervallet datatype i PostgreSQL, kan du ændre den måde, intervaloutput formateres på.
Du kan vælge mellem fire formater, som dine intervaller kan udlæses i.
Outputformatet for intervaltypen kan indstilles til en af følgende stilarter:
sql_standard
postgres
postgres_verbose
iso_8601
Standardstilen er postgres
.
For at ændre dit intervalformat skal du bruge SET intervalstyle
kommando.
Eksempler
De følgende eksempler viser outputtet af make_interval()
når du bruger de forskellige output-stile.
sql_standard
Denne stil er i overensstemmelse med SQL-standardens specifikation for intervalliteral-strenge, hvis intervalværdien opfylder standardens begrænsninger (enten kun år-måned eller kun dagtid, uden blanding af positive og negative komponenter).
Ellers ser outputtet ud som en standard-års-måned-literal-streng efterfulgt af en dag-time-literal-streng, med eksplicitte tegn tilføjet for at udelukke intervaller med blandede tegn.
Her er et eksempel, der bruger år-måned.
SET intervalstyle = 'sql_standard';
SELECT make_interval(years => 1, months => 2);
Resultat:
1-2
Nedenfor er et andet eksempel. Denne gang angiver jeg år, måneder, uger, dage, timer, minutter og sekunder.
SET intervalstyle = 'sql_standard';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Resultat:
+1-2 +25 +5:06:07
postgres
postgress
er standardindstillingen.
Denne stil matcher outputtet af Postgres-udgivelser før 8.4, når DateStyle
parameter blev sat til 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
Denne stil matcher outputtet af Postgres-udgivelser før 8.4, når DateStyle
parameter blev sat til ikke-ISO
output.
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
Denne stil matcher "formatet med betegnelser" beskrevet i afsnit 4.4.3.2 i ISO 8601-standarden.
SET intervalstyle = 'iso_8601';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Resultat:
P1Y2M25DT5H6M7S