I denne artikel vil vi se på arbejdet med datoer i PostgreSQL, herunder de forskellige datodatatyper og -formater, deres funktioner og måder, hvordan du håndterer dem i din daglige rutine. Vi vil bruge dbForge Studio til PostgreSQL til at illustrere eksemplerne.
Du kan bruge datoer og tidsstempler til dataanalyse og datalagring, da de giver dig mulighed for at bestemme, hvornår en hændelse rent faktisk fandt sted. Det vanskelige ved datoer er, at deres formater varierer i forskellige lande, så det kan være en ret udfordrende opgave for begyndere inden for databasestyring. Datokolonnens datatype og format skal altid være i overensstemmelse med de oplysninger, brugeren indtaster. Derudover bør du ændre datoformatet for at imødekomme dine brugeres præferencer. Postgres er i stand til at håndtere en lang række dataformater.
Indhold
- PostgreSQL DATE-datatypeoversigt
- Brug af den aktuelle dato som standardværdi
- Postgres DATE-funktioner
- Brug af funktionen NOW() til at få den aktuelle dato
- Ved brug af TO_CHAR()-funktionen – udlæs datoværdien i et specificeret format
- Brug af minusoperatoren til at få intervallet mellem to datoer
- Brug af AGE()-funktionen til at få datoforskellen i år, måneder og dage
- Brug af EXTRACT()-funktionen til at få år, kvartal, måned, uge, dag fra en datoværdi
- Brug af TO_TIMESTAMP() til at konvertere en streng til et tidsstempel
- Oversigt
PostgreSQL DATE-datatypeoversigt
DATE
datatypen i PostgreSQL bruges til at gemme datoer i formatet ÅÅÅÅ-MM-DD (f.eks. 2022-03-24). Den har brug for 4 bytes for at gemme en datoværdi i en kolonne. Bemærk, at den tidligst mulige dato er 4713 f.Kr. og den senest mulige dato er 5874897 e.Kr.
Det er meget vigtigt at bevare kodens læsbarhed på tidspunktet for skrivningen. dbForge Studio til PostgreSQL kan prale af en praktisk og intuitiv PostgreSQL-formatering. Ved at tage sig af kodeformatering, syntakstjek og kodefuldførelse, vil Postgres SQL-formateringsfunktionen indbygget dbForge Studio til PostgreSQL lade dig forblive fokuseret på at håndtere datatypen DATE.
Brug af den aktuelle dato som standardværdi
Standardværdien i en DATE
kolonne i en Postgres-database kan indstilles ved at bruge nøgleordet DEFAULT CURRENT DATE
, som i scriptet nedenfor:
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;
Som du kan se, er en værdi for [begivenhedsdatoen] kolonne indsættes automatisk af PostgreSQL-serveren ved hjælp af den aktuelle systemdato i formatet ÅÅÅÅ-MM-DD.
Postgres DATE-funktioner
Nogle gange er det vigtigt at ændre datoformatet eller beregne værdierne i PostgreSQL-tabellen. Vi skal muligvis gøre dette for brugere fra forskellige tidszoner over hele verden. I dette tilfælde er SQL-funktioner afgørende.
Brug af funktionen NOW() til at få den aktuelle dato
SELECT now();
Du kan bruge dobbelte koloner (::) til at kaste en DATETIME
værdi til en DATE
værdi som vist nedenfor:
Det aktuelle systemtidsstempel returneres af NOW()
fungere. Syntaksen er som følger:
SELECT now()::date;
Brug af TO_CHAR()-funktionen – output datoværdien i et specificeret format
For at præsentere outputtet af en Postgres-datoværdi i et specificeret format, skal TO_CHAR()
funktion kommer til nytte. Syntaksen er som følger:
TO_CHAR(expression, format)
Der er to parametre, der accepteres af TO_CHAR()
funktion:
- Indtastningsdato :Den dato, der skal konverteres til et bestemt format.
- Datoformat :Pladsholderen for en ny datoformatspecifikation.
Lad os se, hvordan du konverterer de eksisterende datoværdier fra [Mine begivenheder] tabel i formatet DD-MM-ÅÅÅÅ.
SELECT event_details,event_date as ExistingDateformat,
to_char(event_date,'DD-MM-YYYY') As NewDateFormat FROM myevents;
For at konvertere det aktuelle tidsstempel til det foretrukne format, kan du fusionere TO_CHAR()
og NOW()
funktioner.
SELECT TO_CHAR(NOW() :: DATE, 'dd-mm-yyyy');
Brug af minusoperatoren til at få intervallet mellem to datoer
For at beregne forskellen mellem to datoer skal du bruge minus (-) operatoren. Forespørgslen nedenfor angiver tidsperioden mellem det nuværende tidsstempel og [begivenhedsdato] fra Mine begivenheder bord.
SELECT event_date,now() as currentdate,
now()-event_date as Interval FROM myevents
where event_id=2;
Du kan også vælge et interval for datoen, der skal returneres, når der er gået en vis tid. Tag et kig på forespørgslen nedenfor:
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;
Brug af AGE()-funktionen til at få datoforskellen i år, måneder og dage
Med AGE()
funktion, kan du få datoforskellen i år, måneder og dage. Denne funktion kan bruges til at bestemme en persons alder. Den første datoværdi trækkes fra den anden datoværdi med denne funktion, som accepterer to datoinput. Når værdierne i funktionsscriptet vendes om, er resultatet en negativ værdi.
Lad os finde ud af alderen på den person, hvis fødselsdato er 1995-10-09. Syntaksen er som følger:
SELECT current_date,
AGE(timestamp '1995-10-09'::timestamp) as EmpAge;
Brug af EXTRACT()-funktionen til at få år, kvartal, måned, uge, dag fra en datoværdi
EXTRACT()
funktion returnerer en dag, uge, måned, år og et kvartal fra den angivne datoværdi.
Uddrag et år:
SELECT EXTRACT(YEAR FROM TIMESTAMP '2022-04-09 10:30:15') as year;
Uddrag en måned:
SELECT EXTRACT(Month FROM TIMESTAMP '2022-04-09 10:30:15') as Month;
Udtræk en fjerdedel:
SELECT EXTRACT(QUARTER FROM TIMESTAMP '2022-04-09 10:30:15') as QUARTER;
Uddrag ugedagen:
SELECT EXTRACT(DOW FROM TIMESTAMP '2022-04-09 10:30:15') as DOW;
Uddrag årets dag:
SELECT EXTRACT(DOY FROM TIMESTAMP '2022-04-09 10:30:15') as DOY;
Bemærk, at dbForge Studio viser forespørgselsudførelsesresultaterne på hver sin fane.
EXTRACT()
funktion kan nemt kombineres med INTERVAL
. Lad os antage, at vi vil indstille intervallet til 5 år 8 måneder 23 dage 08 timer 10 minutter og 20 sekunder. Individuelle værdier returneres af EXTRACT
funktion.
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' );
Brug af TO_TIMESTAMP() til at konvertere en streng til et tidsstempel
Du kan beholde datoværdier i UTC (Universal Time Coordinator) og ændre tidszonen efter behov, hvis du vil konvertere tidsstemplet til en anden tidszone.
SELECT * FROM pg_timezone_names;
For at kontrollere den aktuelle tidszone skal du bruge SHOW TIMEZONE
kommando.
Du kan bruge AT TIME ZONE
for at modtage output for den valgte tidszone ved at vælge den nødvendige tidszoneværdi fra pg_timezone_names tabel.
SELECT '2022-04-09 10:36:19'::timestamp AT TIME ZONE 'America/Los_Angeles';
AT TIME ZONE
giver dig mulighed for at have forskellige tidszoneudgange.
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';
Oversigt
For at opsummere, PostgreSQL DATE
datatype er meget vigtig og nyttig, når du gemmer datoer og tidsstempler i tabeller, så det er ret almindeligt i en relationsdatabase. Omfanget af deres brug er utroligt bredt, derfor er det så vigtigt at gøre dem tydelige for enhver bruger i ethvert land og tidszone. Med forskellige Postgres-funktioner er det nemt at imødekomme brugernes behov, da du kan ændre datoer, så de kan bruges i en bestemt tidszone, med et bestemt format og andre detaljer, der gør arbejdet med sådanne data meget nemmere. Endelig, hvis du leder efter en perfekt kombination af en intuitiv grafisk grænseflade og en udvidet kommandolinje, der kan gøre arbejdet med DATE
datatype endnu mere behagelig, vil dbForge Studio til PostgreSQL komme til nytte.