PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как make_interval() работи в PostgreSQL

В PostgreSQL make_interval() функцията създава интервал от полета за години, месеци, седмици, дни, часове, минути и секунди.

Вие предоставяте полетата за години, месеци, седмици, дни, часове, минути и/или секунди и то ще върне интервал в интервала тип данни.

Синтаксис

Функцията има следния синтаксис:

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)

Пример

Ето пример за демонстрация.

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

Резултат:

1 year 2 mons 25 days 05:06:07

В този пример предоставих всичките седем аргумента.

Това е традиционният механизъм за предаване на аргументи към функциите в PostgreSQL и се нарича „позиционна нотация“.

Когато се използва позиционна нотация, всички аргументи са посочени в ред.

Именна нотация

Ето пример за използване на обозначена нотация.

SELECT make_interval(days => 12);

Резултат:

12 days

В този пример използвам именувана нотация, за да посоча само един аргумент. Това ме спестява от необходимостта да въвеждам всички аргументи, само за да посоча броя на дните.

Всички аргументи по подразбиране са нулеви, така че няма неблагоприятно въздействие, ако ги пропуснете.

Ето какво се случва, ако не използвам нотация с име, когато посоча само един аргумент.

SELECT make_interval(12);

Резултат:

12 years

Предполагаше, че имам предвид 12 години.

Хубавото на наименованата нотация е, че можете да предоставите толкова аргументи, колкото са ви необходими, и не повече.

Например:

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

Резултат:

10 mons 5 days 00:47:00

Наследена именувана нотация

По-старите версии на Postgres използваха малко по-различен синтаксис за наименована нотация. Този синтаксис използва := вместо => .

Пример:

SELECT make_interval(days := 12);

Резултат:

12 days

От Postgres 12 този синтаксис все още работи за обратна съвместимост.

Седмици и дни

С интервалите на Postgres седмиците се представят като дни. Така че, ако посочите weeks аргумент, резултатът ще бъде в дни.

SELECT make_interval(weeks => 2);

Резултат:

14 days

Следователно, ако посочите и days аргумент, той ще бъде добавен към дните, произведени от weeks аргумент.

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

Резултат:

17 days

Интервален изходен стил

В Postgres изходният формат на типа интервал може да бъде зададен на един от следните четири интервални стила:

  • sql_standard
  • postgres
  • postgres_verbose
  • iso_8601

Можете да зададете това, като използвате SET intervalstyle . По подразбиране е postgres формат.

Всички предишни примери използват формата по подразбиране (postgres ).

Ето пример, който демонстрира изхода на make_interval() когато използвате различни изходни стилове.

sql_standard

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

Резултат:

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

postgres

Това е настройката по подразбиране.

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

Резултат:

1 година 2 мес. 25 дни 05:06:07

postgres_verbose

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

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

Резултат:

P1Y2M25DT5H6M7S

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Импортиране на PostgreSQL CSV от командния ред

  2. Архивиране/възстановяване на докеризирана PostgreSQL база данни

  3. Вземете времето за изпълнение на заявката PostgreSQL

  4. Използване на клауза EXCEPT в PostgreSQL

  5. 7 неща, за които трябва да внимавате при внедряването на PostgreSQL