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

Praca z datami w PostgreSQL


Wprowadzenie

Możliwość przechowywania wartości dat w bazie danych umożliwia dodanie elementu czasu do zapytań i analizę danych. Ważne jest, aby wiedzieć, jak pracować z typami dat w odpowiedniej bazie danych, aby móc dokładnie raportować, niezależnie od tego, czy chodzi o informacje o zamówieniach, wiek osób, czy o jakikolwiek inny przypadek użycia.

W tym przewodniku omówimy przechowywanie DATE typy w PostgreSQL i różne sposoby pracy z nimi.



PostgreSQL DATE typ danych

DATE typ w PostgreSQL może przechowywać datę bez powiązanej wartości czasu:

DATE

PostgreSQL używa 4 bajtów do przechowywania wartości daty. Zakres wartości dla wartości dat w PostgreSQL to 4713 BC do 5874897 AD.

Podczas przechowywania wartości daty PostgreSQL używa yyyy-mm-dd format np. 1994-10-27. Ten format jest również używany w PostgreSQL do wstawiania danych.

W PostgreSQL można ustawić domyślną wartość daty bieżącej. Można to zrobić podczas tworzenia tabeli za pomocą DEFAULT i CURRENT_DATE słowa kluczowe. last_checkout kolumna z naszej bibliotecznej tabeli kasy domyślnie przyjmuje aktualną datę:

CREATE TABLE checkouts (        author_id serial PRIMARY KEY,        author_name VARCHAR (255) NOT NULL,        book_title VARCHAR (255) NOT NULL,        published_date DATE NOT NULL,          last_checkout DATE NOT NULL DEFAULT CURRENT_DATE);

Podążając za tą strukturą tabeli, możemy wstawić dane za pomocą INSERT INTO oświadczenie:

INSERT INTO checkouts (author_name, book_title, published_date)VALUES('James Joyce', 'Ulysses', '1922-02-02');

Następnie podczas zapytania o checkouts tabeli, otrzymujemy:

SELECT * FROM checkouts; author_id | author_name | book_title | published_date | last_checkout -----------+-------------+------------+----------------+---------------         1 | James Joyce |   Ulysses  |   1922-02-02   |  2021-09-27(1 row)


PostgreSQL DATE funkcje

Znając tajniki DATE wpisz PostgreSQL, wtedy będziesz mógł używać funkcji operujących na przechowywanych przez Ciebie informacjach. Przejdziemy przez niektóre typowe funkcje oparte na tabeli wprowadzonej w poprzedniej sekcji.


Pobierz aktualną datę

W PostgreSQL możesz uzyskać aktualną datę i godzinę za pomocą wbudowanej funkcji NOW() funkcjonować. Poniższe oświadczenie zwróci zarówno dzień, jak i godzinę:

SELECT NOW();              now              ------------------------------- 2021-09-27 15:22:53.679985+02(1 row)

Jeśli godzina nie jest interesująca, możesz również określić, aby zwracać tylko datę z podwójnymi dwukropkami :: aby przesłać DATETIME wartość na DATE wartość:

SELECT NOW()::date;    now     ------------ 2021-09-27(1 row)

Używając CURRENT_DATE to kolejny sposób na uzyskanie aktualnej daty, jak pokazano poniżej:

SELECT CURRENT_DATE; current_date -------------- 2021-09-27(1 row)

Wszystkie trzy z tych opcji zwrócą datę w yyyy-mm-dd format. W PostgreSQL możesz w razie potrzeby dostosować format tego wyjścia.



Wypisz wartość daty w określonym formacie

Aby wyprowadzić wartość daty w określonym formacie, użyj funkcji TO_CHAR() funkcjonować. Ta funkcja przyjmuje dwa parametry:

  1. wartość, którą chcesz sformatować
  2. szablon definiujący format wyjściowy
SELECT TO_CHAR(NOW()::date, 'dd/mm/yyyy');  to_char   ------------ 27/09/2021(1 row)

Możesz również wyświetlić datę w formacie takim jak Sep 27, 2021 :

SELECT TO_CHAR(NOW():: DATE, 'Mon dd, yyyy');   to_char    -------------- Sep 27, 2021(1 row)

W zależności od wymagań systemu może być potrzebna data sformatowana w określony sposób. W tym scenariuszu przydatna jest możliwość określenia danych wyjściowych w PostgreSQL.



Pobierz odstęp między dwiema datami

PostgreSQL pozwala uzyskać interwał między dwiema datami za pomocą - operator. Korzystanie z tego operatora pozwala obliczyć takie rzeczy, jak staż pracy pracownika lub czas od opublikowania książki.

W naszym przykładzie chcemy sprawdzić, ile dni minęło od Ulissesa Joyce'a został opublikowany przez odjęcie bieżącej daty od published_date :

SELECT                author_name,                book_title,                now()::date - published_date as diffFROM                checkouts;

Wynik:

 author_name | book_title |            diff            -------------+------------+---------------------------- James Joyce |  Ulysses   |         36397 days (1 row)


Obliczanie wieku na podstawie wartości dat

Możemy kontynuować ten sam przykład, aby obliczyć wiek na bieżącą datę w latach, miesiącach i dniach za pomocą AGE() funkcjonować. Poniższa instrukcja używa AGE() funkcja obliczania wieku publikacji z naszej biblioteki checkouts stoły:

SELECT                author_name,                book_title,                AGE(published_date)FROM                checkouts;

Za pomocą tej funkcji możemy obliczyć, ile lat ma książka w ekwipunku:

 author_name | book_title |           age           -------------+------------+------------------------- James Joyce |  Ulysses   | 99 years 7 mons 25 days(1 row)

Ważne jest, aby pamiętać, że jeśli przekażesz pojedynczą datę do AGE() funkcja, to automatycznie użyje bieżącej daty do odejmowania i obliczania. Możesz również podać dwie daty do funkcji obliczania wieku, takie jak:

SELECT                author_name,                book_title,                AGE('2000-01-01',published_date),FROM                checkouts;

Wynik:

 author_name | book_title |           age            -------------+------------+-------------------------- James Joyce |  Ulysses   | 77 years 10 mons 27 days(1 row)


Wyodrębnianie roku, kwartału, miesiąca, tygodnia lub dnia z wartości daty

Ostatnią funkcją, którą omówimy, jest EXTRACT() funkcja w PostgreSQL, która pozwala oddzielić składniki daty, takie jak rok, kwartał, miesiąc i dzień.

Poniższe oświadczenie wyciąga rok, miesiąc i dzień z opublikowanej daty Ulyssesa :

SELECT             author_name,             book_title,             EXTRACT(YEAR FROM published_date) AS YEAR,            EXTRACT(MONTH FROM published_date) AS MONTH,             EXTRACT(DAY FROM published_date) AS DAY FROM             checkouts;

Wyniki będą wyglądać następująco:

 author_name | book_title | year | month | day -------------+------------+------+-------+----- James Joyce |  Ulysses   | 1922 |   2   |  2(1 row)

Jest to przydatna funkcja, o której należy pamiętać, kiedy możesz potrzebować tylko części wartości daty do obliczeń na przykład z danymi.




Wniosek

W tym przewodniku omówiliśmy podstawy tego, co można zrobić za pomocą DATE typ danych w PostgreSQL. Ważne jest, aby wiedzieć, jak dane dat działają w Twojej bazie danych. Znajomość sposobów uzyskiwania do niego dostępu i operowania na nim umożliwia wykonywanie obliczeń wieku, wykonywanie ekstrakcji w zapytaniach, a także konfigurowanie danych wyjściowych, jeśli to konieczne, aby dopasować je do wymagań innego systemu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Warunkowa instrukcja INSERT INTO w postgresie

  2. Pobieranie NoSuchMethodError:javax.persistence.Table.indexes() podczas wykonywania zapytania JPA

  3. Dlaczego postgres nie używa indeksu w moim zapytaniu

  4. Jak zwrócić listę dostępnych sortowań w PostgreSQL

  5. Wskazówki dotyczące zdalnego zarządzania PostgreSQL