PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak działa make_interval() w PostgreSQL

W PostgreSQL funkcja make_interval() funkcja tworzy interwał z pól lat, miesięcy, tygodni, dni, godzin, minut i sekund.

Podajesz pola lat, miesięcy, tygodni, dni, godzin, minut i/lub sekund, a zwróci interwał w przedziale typ danych.

Składnia

Funkcja ma następującą składnię:

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)

Przykład

Oto przykład do zademonstrowania.

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

Wynik:

1 year 2 mons 25 days 05:06:07

W tym przykładzie podałem wszystkie siedem argumentów.

Jest to tradycyjny mechanizm przekazywania argumentów do funkcji w PostgreSQL i jest określany jako „notacja pozycyjna”.

W przypadku korzystania z notacji pozycyjnej wszystkie argumenty są podane w kolejności.

Zapis nazwany

Oto przykład z użyciem notacji nazwanej.

SELECT make_interval(days => 12);

Wynik:

12 days

W tym przykładzie używam notacji nazwanej, aby określić tylko jeden argument. Dzięki temu nie muszę wprowadzać wszystkich argumentów, wystarczy określić liczbę dni.

Wszystkie argumenty są domyślnie zerowe, więc ich pominięcie nie ma negatywnego wpływu.

Oto, co się stanie, jeśli nie użyję notacji nazwanej przy określaniu tylko jednego argumentu.

SELECT make_interval(12);

Wynik:

12 years

Zakładało, że mam na myśli 12 lat.

Zaletą notacji nazwanej jest to, że możesz podać tyle argumentów, ile potrzebujesz i nie więcej.

Na przykład:

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

Wynik:

10 mons 5 days 00:47:00

Starsza nazwana notacja

Starsze wersje Postgresa używały nieco innej składni dla notacji nazwanej. Ta składnia używa := zamiast => .

Przykład:

SELECT make_interval(days := 12);

Wynik:

12 days

Od Postgres 12 ta składnia nadal działa w celu zapewnienia kompatybilności wstecznej.

Tygodnie i dni

W przypadku interwałów Postgres tygodnie są przedstawiane jako dni. Więc jeśli określisz weeks argument, wynik będzie w dniach.

SELECT make_interval(weeks => 2);

Wynik:

14 days

Dlatego jeśli określisz również days argument, zostanie dodany do dni wyprodukowanych przez weeks argument.

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

Wynik:

17 days

Styl wyjścia interwałowego

W Postgresie format wyjściowy typu interwału można ustawić na jeden z następujących czterech stylów interwałów:

  • sql_standard
  • postgres
  • postgres_verbose
  • iso_8601

Możesz to ustawić za pomocą SET intervalstyle . Domyślnie jest to postgres format.

Wszystkie poprzednie przykłady używają formatu domyślnego (postgres ).

Oto przykład, który demonstruje wyjście make_interval() podczas korzystania z różnych stylów wyjściowych.

sql_standard

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

Wynik:

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

postgres

To jest ustawienie domyślne.

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

Wynik:

1 rok 2 pon 25 dni 05:06:07

postgres_verbose

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

Wynik:

@ 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);

Wynik:

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. Jak zainstalować postgres z NSIS ze wszystkimi parametrami?

  2. Zwróć typ tabeli z funkcji A w PostgreSQL

  3. Zmienianie pola Enum za pomocą Alembic

  4. Błąd podczas próby uruchomienia pgAdmin4

  5. WSTAW wiersze do wielu tabel w jednym zapytaniu, wybierając z zaangażowanej tabeli