Interwał PostgreSQL

Interwał PostgreSQL
PostgreSQL to popularny system zarządzania bazą danych. Jest to oprogramowanie typu open source, które jest popularne ze względu na stabilność i wsparcie dla różnych otwartego standardów technicznych. Jest aktywnie utrzymywany przez programistów z całego świata.

W tym przewodniku będziemy pracować nad przedziałem w PostgreSQL.

Wymagania wstępne:

Aby wykonać kroki wykazane w tym przewodniku, będziesz potrzebować następujących elementów:

  • Odpowiednio skonfigurowany system Linux. Dowiedz się więcej o instalacji Ubuntu w VirtualBox.
  • Właściwa instalacja PostgreSQL. Dowiedz się więcej o instalacji PostgreSQL na Ubuntu.

Interwał w PostgreSQL

Aby przechowywać i zarządzać okresami (minuty, sekundy, lata itp.), PostgreSQL oferuje typ danych interwałowych.

  • Rozmiar interwału wynosi 16 bajtów.
  • Może przechowywać wartości od -178000000 lat do 178000000 lat.
  • Dostępne są różne style interwałowe, na przykład Postgres (domyślnie), Postgres_verbose, SQL_STASTARD, ISO_8601 itp.
  • Operacje arytmetyczne są możliwe.

Typ interwału jest następujący:

$ @ interwał

Tutaj:

  • Wartość przedziału może mieć wartość precyzyjną P, w której wartość p może wynosić od 0 do 6.
  • Znak „@” jest opcjonalny, dlatego można go bezpiecznie pominąć.

Formaty interwałowe

Postgres_verbose
$

Gdzie:

  • Ilość: liczba, która może zaakceptować „+” lub „-”.
  • Jednostka: Obsługiwane są różne jednostki czasowe. Na przykład: dekada, wiek, miesiąc, dzień, tydzień, godzinę, drugi i skrót (d, m, y itp.). Formy mnogie są również wspierane (dni, miesiące itp.).

To jest format Postgres_verbose, który jest wspólny dla formatów wyjściowych interwałowych.

ISO 8601

Struktura formatu ISO 8601 z decydentami jest następująca:

$ PT

Tutaj:

  • Wartość zaczyna się od „P”.
  • Wartość po „t” oznacza porę dnia.

Następujące skróty jednostkowe są dostępne w ISO 8601:

  • Y: Lata
  • M: miesiące (w sekcji daty)
  • W: tygodnie
  • D: Dni
  • H: godziny
  • M: minuty (w sekcji czasu)
  • S: sekundy

Oto przykład interwału w formacie ISO 8601 (z decydentami):

P5Y4M3DT2H1M2S

Istnieje alternatywny format ISO 8601. Struktura jest następująca:

$ PT

Oto ten sam przykład przedziału w formacie ISO 8601:

$ P0005-04-03T02: 01: 02

Korzystanie z wartości interwałowych

W tej sekcji zademonstrujemy różne sposoby wykorzystania wartości przedziałów w zapytaniach postgresper.

Podstawowe użycie
Z powłoki PostgreSQL uruchom następujące zapytanie:

WYBIERAĆ

Teraz (), teraz () - interwał „1 rok 3 godziny 20 minut”
Jako „3 godziny 20 minut temu zeszłego roku”;

Tutaj:

  • Funkcja teraz () zwraca bieżącą datę i godzinę.
  • Od czasu do czasu odejmujemy „1 rok 3 godziny 20 minut” (), aby uzyskać pożądaną wartość.
  • Korzystając z instrukcji AS, określamy nazwę drugiej kolumny wyjścia.

Formaty wyjściowe interwału

W PostgreSQL możemy określić format wyjściowy wartości interwałowej za pomocą następującego polecenia:

$ Set interalstyle = '';

Istnieje kilka dostępnych formatów:

  • SQL_STASTARD
  • Postgres
  • Postgres_verbose
  • ISO_8601

Umieśćmy to polecenie w działaniu. Poniższe zapytania pokazują wyjście interwałowe w różnych formatach:

Set interalStyle = 'sql_standard';
Wybierz interwał „5 lat 4 miesiące 3 dni 2 godziny 1 minuty 2 sekundy”;
Set interalStyle = 'postgres';
Wybierz interwał „5 lat 4 miesiące 3 dni 2 godziny 1 minuty 2 sekundy”;
Set interalstyle = 'postgres_verbose';
Wybierz interwał „5 lat 4 miesiące 3 dni 2 godziny 1 minuty 2 sekundy”;
Set interalStyle = 'ISO_8601';
Wybierz interwał „5 lat 4 miesiące 3 dni 2 godziny 1 minuty 2 sekundy”;

Operatorzy arytmetyczne interwału

Możliwe jest zastosowanie operacji arytmetycznych (+, -, *) na wartości przedziału. Poniższe zapytania pokazują tę funkcję:

WYBIERAĆ

Interwał „3H 50 m” + interwał „10m”;

WYBIERAĆ

Przedział „9H 50m” - Interwał „50m”;

WYBIERAĆ

3600 * Interwał „1 minuta”;

Przekształcenie interwału na ciąg

Za pomocą funkcji to_char () możemy przekonwertować wartość interwału na ciąg. Struktura to_char () jest następująca:

$ To_char (, );

Tutaj:

  • Pierwszym argumentem jest wartość przedziału, którą należy przekształcić. Może być w dowolnym formacie interwałowym.
  • Drugi argument opisuje format wyjścia.

Poniższe zapytanie pokazuje prosty przykład przekształcenia interwału w formacie ISO 8601 w prosty ciąg:

WYBIERAĆ
To_char (
Interwał „P0005-04-03T02: 01: 02”,
„HH24: MI: SS”
);

Ekstrakcja danych z interwału

Za pomocą funkcji wyciąg () możemy wyodrębnić zawartość określonego pola z wartości przedziału. Struktura dowodzenia wyciąg () w tandemie z przedziałem jest następująca:

$ Ekstrakt ( Z );

Tutaj:

  • pole: Pole, które należy wyodrębnić z interwału. Na przykład: sekundy, minuty, godziny, data, miesiąc, rok itp.
  • interwał: Wartość przedziału.

Uruchommy funkcję ekstraktu (). W poniższym przykładzie wyodrębniamy pole minutowe z wartości interwałowej:

WYBIERAĆ

WYCIĄG (
MINUTA
Z
Interwał „P0005-04-03T02: 01: 02”

Dostosowanie wartości interwałowej

Funkcje Justify_Days () i Justify_hours () mogą konwertować odstępy od 30 dni na 1 miesiąc i 24 godziny na 1 dzień,.

Poniższe zapytanie pokazuje użycie tych funkcji:

WYBIERAĆ

justify_days (interwał '90 dni),
justify_hours (interwał '72 godziny ');

Wniosek

Przeszliśmy funkcję przedziału w PostgreSQL. Ten przewodnik opracowuje różne obsługiwane formaty przedziałów. Prezentuje także różne sposoby wdrażania interwału w zapytaniach. Na koniec badaliśmy również różne funkcje PostgreSQL, które tłumaczą/przekształcają wartość przedziału w określonych formatach.

Trzeba wchodzić w interakcje z PostgreSQL przez sieć? Istnieje różne dostępne GUI PostgreSQL, które mogą łączyć się ze zdalnym serwerem i zarządzać nim bez wysiłku. Oprócz wbudowanych funkcji PostgreSQL obsługuje również funkcje zdefiniowane przez użytkownika.