При работа с интервала тип данни в PostgreSQL, можете да промените начина на форматиране на изходния интервал.
Имате избор от четири формата, в които вашите интервали могат да бъдат изведени.
Изходният формат на типа интервал може да бъде зададен на един от следните стилове:
sql_standard
postgres
postgres_verbose
iso_8601
Стилът по подразбиране е postgres
.
За да промените вашия интервален формат, използвайте SET intervalstyle
команда.
Примери
Следните примери демонстрират изхода на make_interval()
когато използвате различните изходни стилове.
sql_standard
Този стил съответства на спецификацията на SQL стандарта за интервални литерални низове, ако стойността на интервала отговаря на ограниченията на стандарта (само година-месец или само ден, без смесване на положителни и отрицателни компоненти).
В противен случай изходът изглежда като стандартен литерален низ година-месец, последван от дневен литерален низ, с добавени изрични знаци, за да се разграничат интервалите със смесени знаци.
Ето пример за използване на година-месец.
SET intervalstyle = 'sql_standard';
SELECT make_interval(years => 1, months => 2);
Резултат:
1-2
По-долу е друг пример. Този път посочвам години, месеци, седмици, дни, часове, минути и секунди.
SET intervalstyle = 'sql_standard';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Резултат:
+1-2 +25 +5:06:07
postgres
postgress
е настройката по подразбиране.
Този стил съответства на изхода на изданията на Postgres преди 8.4, когато DateStyle
параметърът е зададен на ISO
.
SET intervalstyle = 'postgres';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Резултат:
1 year 2 mons 25 days 05:06:07
postgres_verbose
Този стил съответства на изхода на изданията на Postgres преди 8.4, когато DateStyle
параметърът е зададен на не-ISO
изход.
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
Този стил съответства на „формата с обозначения“, описан в раздел 4.4.3.2 от стандарта ISO 8601.
SET intervalstyle = 'iso_8601';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
Резултат:
P1Y2M25DT5H6M7S