sql >> Databáze >  >> RDS >> PostgreSQL

Práce s daty v PostgreSQL


Úvod

Schopnost ukládat hodnoty data uvnitř databáze vám umožňuje přidat prvek času k vašim dotazům a analýze vašich dat. Je důležité vědět, jak pracovat s typy dat ve vaší databázi, abyste mohli být ve svých hlášeních přesní, ať už jde o informace o objednávkách, věk lidí nebo jakýkoli jiný případ použití.

V této příručce budeme diskutovat o ukládání DATE typy v PostgreSQL a různé způsoby, jak s nimi můžete pracovat.



PostgreSQL DATE datový typ

DATE typ v PostgreSQL může ukládat datum bez přiřazené časové hodnoty:

DATE

PostgreSQL používá 4 bajty k uložení hodnoty data. Rozsah hodnot pro hodnoty data v PostgreSQL je 4713 BC až 5874897 AD.

Při ukládání hodnoty data PostgreSQL používá yyyy-mm-dd formát např. 1994-10-27. Tento formát se také používá v PostgreSQL pro vkládání dat.

V PostgreSQL je možné nastavit výchozí hodnotu data aktuálního data. To lze provést při vytváření tabulky pomocí DEFAULT a CURRENT_DATE klíčová slova. last_checkout sloupec z naší tabulky pokladen ve výchozím nastavení přijímá aktuální datum:

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

Podle této struktury tabulky můžeme vkládat data pomocí INSERT INTO prohlášení:

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

Potom při dotazování na checkouts tabulky, dostaneme následující:

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 funkce

Tím, že budete znát detaily DATE zadejte PostgreSQL, pak můžete používat funkce pracující s informacemi, které ukládáte. Projdeme si některé běžné funkce, které vycházejí z tabulky uvedené v předchozí části.


Získat aktuální datum

V PostgreSQL můžete získat aktuální datum a čas pomocí vestavěného NOW() funkce. Následující příkaz vrátí den i čas:

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

Pokud vás čas nezajímá, můžete také zadat, aby se datum vrátilo pouze s dvojitými dvojtečkami :: k odeslání DATETIME hodnotu do DATE hodnota:

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

Pomocí CURRENT_DATE je další způsob, jak získat aktuální datum, jak je ukázáno níže:

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

Všechny tři tyto možnosti vám vrátí datum v yyyy-mm-dd formát. V rámci PostgreSQL můžete v případě potřeby upravit formát tohoto výstupu.



Výstup hodnoty data v konkrétním formátu

Pro výstup hodnoty data v určitém formátu použijte TO_CHAR() funkce. Tato funkce přijímá dva parametry:

  1. hodnotu, kterou chcete formátovat
  2. šablonu, která definuje výstupní formát
SELECT TO_CHAR(NOW()::date, 'dd/mm/yyyy');  to_char   ------------ 27/09/2021(1 row)

Datum můžete také zobrazit ve formátu jako Sep 27, 2021 :

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

V závislosti na požadavcích systému můžete potřebovat datum naformátované specifickým způsobem. Toto je scénář, kdy je užitečná možnost specifikovat výstup v PostgreSQL.



Získat interval mezi dvěma daty

PostgreSQL vám umožňuje získat interval mezi dvěma daty pomocí - operátor. Pomocí tohoto operátoru můžete vypočítat věci, jako je doba trvání zaměstnance nebo doba od vydání knihy.

V našem příkladu chceme zjistit, kolik dní uplynulo od Joyceova Ulysses byl publikován odečtením aktuálního data od published_date :

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

Výsledkem je:

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


Výpočet věku pomocí hodnot data

Můžeme pokračovat ve stejném příkladu a vypočítat věk k aktuálnímu datu v letech, měsících a dnech pomocí AGE() funkce. Následující příkaz používá AGE() funkce pro výpočet stáří publikace z naší knihovny checkouts tabulky:

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

Pomocí této funkce můžeme vypočítat, jak stará je kniha v inventáři:

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

Je důležité si uvědomit, že pokud vložíte jedno datum do AGE() funkce, pak automaticky použije aktuální datum k odečtení a výpočtu. Do funkce pro výpočet věku můžete také zadat dvě data, například:

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

Výsledkem je:

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


Extrahování roku, čtvrtletí, měsíce, týdne nebo dne z hodnoty data

Poslední funkcí, kterou se budeme zabývat, je EXTRACT() funkce v PostgreSQL, která vám umožňuje oddělit komponenty data, jako je rok, čtvrtletí, měsíc a den.

Následující výpis obsahuje rok, měsíc a den od data zveřejnění Ulysses :

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;

Výsledky budou vypadat následovně:

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

Je to užitečná funkce, na kterou byste si měli být vědomi, když například pro výpočet s vašimi daty potřebujete pouze část hodnoty data.




Závěr

V této příručce jsme probrali základy toho, co můžete dělat s DATE datový typ v PostgreSQL. Je důležité vědět, jak data data fungují uvnitř vaší databáze. Pochopení způsobů, jak k němu můžete přistupovat a pracovat s ním, vám umožní provádět výpočty stáří, provádět extrakci dotazů a také konfigurovat výstup, pokud je to nutné, aby odpovídal požadavkům jiného systému.




  1. Vypočítejte bod 50 mil daleko (sever, 45 % SV, 45 % JZ)

  2. Jak funguje UTC_TIME() v MariaDB

  3. 5 způsobů, jak zkontrolovat, zda tabulka v PostgreSQL existuje

  4. INSERT with ORDER na Oracle