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

Pochopení typů dat a funkcí PostgreSQL (podle příkladů)

V tomto článku se podíváme na práci s daty v PostgreSQL, včetně různých datových datových typů a formátů, jejich funkcí a způsobů, jak s nimi zacházet ve vaší každodenní rutině. Pro ilustraci příkladů použijeme dbForge Studio pro PostgreSQL.

Data a časová razítka můžete použít pro analýzu a ukládání dat, protože vám umožňují určit, kdy k události skutečně došlo. Záludná věc na datech je, že jejich formáty se v různých zemích liší, takže pro začátečníky ve správě databází to může být docela náročný úkol. Typ dat a formát sloupce data by měl vždy odpovídat informacím zadaným uživatelem. Kromě toho byste měli upravit formát data tak, aby vyhovoval preferencím vašich uživatelů. Postgres je schopen zpracovat širokou škálu datových formátů.

Obsah

  • Přehled datových typů PostgreSQL DATE
  • Jako výchozí hodnotu použít aktuální datum
  • Funkce Postgres DATE
  • Použití funkce NOW() k získání aktuálního data
  • Pomocí funkce TO_CHAR() – výstup hodnoty data v určeném formátu
  • Použití operátoru minus k získání intervalu mezi dvěma daty
  • Použití funkce AGE() k získání rozdílu dat v letech, měsících a dnech
  • Použití funkce EXTRACT() k získání roku, čtvrtletí, měsíce, týdne, dne z hodnoty data
  • Pomocí TO_TIMESTAMP() převést řetězec na časové razítko
  • Shrnutí

Přehled datových typů PostgreSQL DATE

DATE datový typ v PostgreSQL se používá k ukládání dat ve formátu RRRR-MM-DD (např. 2022-03-24). K uložení hodnoty data do sloupce potřebuje 4 bajty. Všimněte si, že nejdříve možné datum je 4713 př.nl a nejpozdější možné datum je 5874897 nl.

Je velmi důležité zachovat čitelnost kódu ve fázi jeho psaní. dbForge Studio pro PostgreSQL se může pochlubit pohodlným a intuitivním formátovačem PostgreSQL. Funkce formátování Postgres SQL vestavěná do dbForge Studio pro PostgreSQL, která se stará o formátování kódu, kontrolu syntaxe a dokončování kódu, vám umožní soustředit se také na práci s datovým typem DATE.

Použití aktuálního data jako výchozí hodnoty

Výchozí hodnota v DATE sloupec v databázi Postgres lze nastavit pomocí klíčového slova DEFAULT CURRENT DATE , jako ve skriptu níže:

CREATE TABLE myevents (
event_id serial PRIMARY KEY,
event_details VARCHAR (255) NOT NULL,
event_date DATE NOT NULL DEFAULT CURRENT_DATE
);
INSERT INTO myevents (event_details)
VALUES('Meeting the client ABC');
 
SELECT * FROM myevents;

Jak vidíte, hodnota pro [datum události] sloupec je automaticky vložen serverem PostgreSQL pomocí aktuálního systémového data ve formátu RRRR-MM-DD.

Funkce Postgres DATE

Někdy je důležité změnit formát data nebo vypočítat hodnoty v tabulce PostgreSQL. Možná to budeme muset udělat pro uživatele z různých časových pásem po celém světě. V tomto případě jsou klíčové funkce SQL.

Použití funkce NOW() k získání aktuálního data

SELECT now();

K odeslání DATETIME můžete použít dvojité dvojtečky (::). hodnotu na DATE hodnotu, jak je uvedeno níže:

Aktuální systémové časové razítko je vráceno NOW() funkce. Syntaxe je následující:

SELECT now()::date;

Použití funkce TO_CHAR() – výstup hodnoty data v určeném formátu

Chcete-li prezentovat výstup hodnoty data Postgres v určeném formátu, TO_CHAR() funkce přijde vhod. Syntaxe je následující:

TO_CHAR(expression, format)

TO_CHAR() přijímá dva parametry funkce:

  • Zadejte datum :Datum, které má být převedeno do určitého formátu.
  • Formát data :Zástupný symbol pro novou specifikaci formátu data.

Podívejme se, jak převést existující hodnoty data z [MyEvents] tabulky do formátu DD-MM-RRRR.

SELECT event_details,event_date as ExistingDateformat,
to_char(event_date,'DD-MM-YYYY') As NewDateFormat FROM myevents;

Chcete-li převést aktuální časové razítko do preferovaného formátu, můžete spojit TO_CHAR() a NOW() funkce.

SELECT TO_CHAR(NOW() :: DATE, 'dd-mm-yyyy');

Použití operátoru mínus k získání intervalu mezi dvěma daty

Chcete-li vypočítat rozdíl mezi dvěma daty, použijte operátor mínus (-). Níže uvedený dotaz poskytuje časové období mezi aktuálním časovým razítkem a [datum události] z MyEvents stůl.

SELECT event_date,now() as currentdate,
now()-event_date as Interval FROM myevents
where event_id=2;

Můžete také vybrat interval, kdy se má datum vrátit po uplynutí určitého času. Podívejte se na dotaz níže:

SELECT (NOW() + interval '3 hour') AS threehourslater,
(NOW() + interval '2 day') AS Twodaylater,
(NOW() - interval '2 year') AS TwoYearBefore,
(event_date- interval '1 year') as eventdatedifference
from myevents;

Použití funkce AGE() k získání rozdílu dat v letech, měsících a dnech

Pomocí AGE() můžete získat rozdíl data v letech, měsících a dnech. Tuto funkci lze použít k určení věku osoby. První hodnota data se odečte od druhé hodnoty data pomocí této funkce, která přijímá dva vstupy data. Když jsou hodnoty ve funkčním skriptu obráceny, výsledkem je záporná hodnota.

Pojďme zjistit věk osoby, jejíž datum narození je 1995-10-09. Syntaxe je následující:

SELECT current_date,
AGE(timestamp '1995-10-09'::timestamp) as EmpAge;

Použití funkce EXTRACT() k získání roku, čtvrtletí, měsíce, týdne, dne z hodnoty data

EXTRACT() Funkce vrací den, týden, měsíc, rok a čtvrtletí ze zadané hodnoty data.

Výpis roku:

SELECT EXTRACT(YEAR FROM TIMESTAMP '2022-04-09 10:30:15') as year;

Výpis měsíce:

SELECT EXTRACT(Month FROM TIMESTAMP '2022-04-09 10:30:15') as Month;

Extrahujte čtvrtinu:

SELECT EXTRACT(QUARTER FROM TIMESTAMP '2022-04-09 10:30:15') as QUARTER;

Extrahujte den v týdnu:

SELECT EXTRACT(DOW FROM TIMESTAMP '2022-04-09 10:30:15') as DOW;

Extrahujte den v roce:

SELECT EXTRACT(DOY FROM TIMESTAMP '2022-04-09 10:30:15') as DOY;

Všimněte si, že dbForge Studio zobrazuje výsledky provádění dotazů každý na samostatné kartě.

EXTRACT() funkci lze snadno kombinovat s INTERVAL . Předpokládejme, že chceme nastavit interval jako 5 let 8 měsíců 23 dní 08 hodin 10 minut a 20 sekund. Jednotlivé hodnoty vrací EXTRACT funkce.

SELECT EXTRACT(YEAR
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Month
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Day
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(hour
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' ),
EXTRACT(Minute
FROM INTERVAL '5 years 8 month 23 days 08 hours 10 minutes 20 seconds' );

Použití TO_TIMESTAMP() k převodu řetězce na časové razítko

Hodnoty data můžete ponechat v UTC (koordinátor univerzálního času) a změnit časové pásmo podle potřeby, pokud chcete časové razítko převést na jiné časové pásmo.

SELECT * FROM pg_timezone_names;

Chcete-li zkontrolovat aktuální časové pásmo, použijte SHOW TIMEZONE příkaz.

Můžete použít AT TIME ZONE pro příjem výstupu pro zvolené časové pásmo výběrem požadované hodnoty časového pásma z pg_timezone_names tabulka.

SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'America/Los_Angeles';

AT TIME ZONE umožňuje mít různé výstupy časového pásma.

SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'America/Washington';
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'Asia/Beijing';
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'Europe/Kyiv';

Přehled

Abych to shrnul, PostgreSQL DATE datový typ je velmi důležitý a užitečný při ukládání dat a časových razítek do tabulek, takže je v relační databázi zcela běžný. Rozsah jejich použití je neuvěřitelně široký, a proto je tak důležité, aby byly přehledné pro každého uživatele v jakékoli zemi a časovém pásmu. S různými funkcemi Postgres je snadné vyhovět potřebám uživatelů, protože můžete změnit data, aby je bylo možné použít v konkrétním časovém pásmu, s určitým formátem a dalšími detaily, které práci s takovými daty značně usnadňují. A konečně, pokud hledáte dokonalou kombinaci intuitivního grafického rozhraní a rozšířeného příkazového řádku, který umožňuje práci s DATE datový typ ještě příjemnější, bude se hodit dbForge Studio pro PostgreSQL.


  1. Nastavení hodnoty pro LIMIT při používání hromadného sběru

  2. MySql zobrazuje výkon

  3. Jak se vzdáleně připojit k databázi Oracle 11g

  4. Převeďte razítko MySql DateTime do formátu Datum v JavaScriptu