sql >> Databasteknik >  >> RDS >> Sqlserver

Utforska Postgres datumformat och deras olika funktioner

I den här artikeln kommer vi att utforska Postgres-datum, de olika datumdatatyperna, användningarna och funktionerna.

Datum och tidsstämplar är användbara för dataanalys och lagring av data för att kontrollera när en händelse faktiskt ägde rum. Till exempel när du har inköps- och försäljningsorder, månads- eller kvartalsintäkter med mera. Datumformaten varierar mellan länder, därför kan det vara en komplicerad uppgift för dem som är nya inom databashantering och som arbetar med datumkolumner. Formatet eller datatypen för datumkolumnen ska alltid matcha användarens inmatning. Dessutom bör du konvertera datumformatet enligt användarens krav.

Postgres har en mängd olika datatyper som stöds. Innan du går vidare föreslår jag att du läser Utforska de olika Postgres-datatyperna för att förstå dessa mer i detalj.

Postgres DATE datatyp

Postgres använder datatypen DATUM för att lagra olika datum i formatet ÅÅÅÅ-MM-DD. Den använder 4 byte för att lagra ett datumvärde i en kolumn.

  • Lägsta datum:4713 f.Kr.
  • Högsta datum:5874897 f.Kr.
  • Datumformat:ÅÅÅÅ-MM-DD (ex. 2021-01-01)

Du kan designa en Postgres-tabell med en DATUM-kolumn och använda sökordet DEFAULT CURRENT_DATE  för att använda nuvarande systemdatum som standardvärde i den här kolumnen.

CREATE TABLE SalesOrders (
Order_id serial PRIMARY KEY,
Orderdetails VARCHAR (255) NOT NULL,
OrderDate DATE NOT NULL DEFAULT CURRENT_DATE
);
INSERT INTO SalesOrders (Orderdetails)
VALUES('Sample Order for customer ABC');

SELECT * FROM SalesOrders;

Som visas nedan infogar SQL automatiskt ett värde för kolumnen [OrderDate] med det aktuella systemdatumet i formatet ÅÅÅÅ-MM-DD.

Postgres DATE-funktioner

Vi behöver ofta ändra datumformatet eller göra beräkningar på befintliga värden lagrade i Postgres-tabellen. Till exempel i Indien är det vanliga datumformatet DD-MM-ÅÅÅÅ. Därför, när en indisk användare ser data, kommer vi troligen att vilja att han ska se data i det format han är mest bekant med. I det här fallet spelar SQL-funktioner en viktig roll.

TO_CHAR()-funktion

Den här funktionen är användbar för att ge utdata av ett Postgres-datumvärde i ett specificerat format. Den accepterar följande två parametrar.

  • Inmatningsdatum:Detta är det datum som du vill konvertera till ett specifikt format.
  • Datumformat:Det är här du anger det nya datumformatet.

Följande fråga konverterar befintliga datumvärden lagrade i tabellen [SalesOrders] till formatet DD-MM-ÅÅÅÅ.

SELECT Orderdetails,OrderDate as ExistingDateformat,
to_char(OrderDate,'DD-MM-YYYY') As NewDateFormat FROM SalesOrders;

De värden som stöds i to_char()-funktionen är som visas nedan.

ÅÅÅÅ Årtal med fyra siffror
ÅÅÅ De tre sista siffrorna i ett år
ÅÅ De två sista siffrorna i ett år
MÅNAD Månadsnamn med versaler
Månad Månadsnamn med den första bokstaven versal
månad Månadsnamn med små bokstäver
MÅN/MÅN/MÅ Månadsförkortning med versaler, första bokstaven versal respektive alla gemener
MM Månadsnummer (01-12)
DAG/Dag/dag Dagsnamn med versaler, första bokstaven versal respektive alla gemener
DDD Årets dag (001 till 366)
DD Dag i månaden (01 till 31)
D Veckodag (söndag (1) till lördag (7))
W Månadens vecka
WW Årets vecka

Några exempel på olika datumformat anges i följande SQL.

SELECT Orderdetails,OrderDate as ExistingDateformat,
to_char(OrderDate,'DD-MM-YYYY') As DDMMYYYY,
to_char(OrderDate,'DD-MM-YY') As DDMMYY,
to_char(OrderDate,'DD.MM.YY') As "DD.MM.YY",
to_char(OrderDate,'MM/DD/YYYY') As "MM/DD/YYYY",
to_char(OrderDate,'DAY MM/DD/YYYY') As "MM/DD/YYYY",
to_char(OrderDate,'DDD MM/DD/YYYY') As "DDD MM/DD/YYYY"
FROM SalesOrders

Now()-funktionen

Funktionen Now() returnerar det aktuella systemets tidsstämpel (datum och tid).

Du kan ange dubbla kolon (::) för att kasta ett DATETIME-värde till ett DATE-värde.

Du kan kombinera TO_CHAR() och Now()-funktionen för att konvertera den aktuella tidsstämpeln till det angivna formatet.

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

Minus- och intervalloperator

Du kan använda minus (-) operatorn för att beräkna skillnaden mellan två datum. Till exempel returnerar frågan nedan intervallet mellan den aktuella tidsstämpeln och [Orderdatum] från tabellen SalesOrders.

SELECT Orderdate,now() as currentdate,
now()-Orderdate as Interval FROM SalesOrders
where order_id=2;

Du kan också ange ett intervall för att returnera datumet efter en angiven period. Till exempel ger SQL-frågan nedan följande värden.

  • För framtida datum, ange intervallvärdet 2 timmar från den aktuella tidsstämpeln: now() + intervall '2 timmar'
  • För framtida datum, ange ett intervallvärde på 1 dag från den aktuella tidsstämpeln: now() + intervall '1 day'
  • För tidigare datum, ange intervallvärdet ett år från den aktuella tidsstämpeln: Now() – intervall '1 år'
  • Beräkna ett år efter datumet från värdet som lagrats i kolumnen [Orderdate]: orderdate – interval ‘1 year’
SELECT (NOW() + interval '2 hour') AS twohourslater,
(NOW() + interval '1 day') AS Onedaylater,
(NOW() - interval '1 year') AS OneYearBefore,
(Orderdate- interval '1 year') as Orderdatedifference
from salesorders;

AGE() funktion

Funktionen AGE() returnerar datumskillnaden i år, månader och dagar. Du kan använda den här funktionen för att beräkna en persons ålder.

Denna funktion accepterar två datumparametrar och subtraherar det första datumvärdet från det andra.

Om du vänder på värdena i funktionsskriptet ovan returnerar det värdet i negativt värde.

I ett annat exempel, låt oss säga att någon har födelsedatumet 1990-07-01. Därför kan en persons ålder beräknas enligt nedan.

SELECT current_date,
AGE(timestamp '1990-07-01') as EmpAge;

EXTRACT() funktion

Funktionen Extract() returnerar dag, vecka, månad, år och kvartal från det angivna datumvärdet.

Extrahera ett år

SELECT EXTRACT(YEAR FROM TIMESTAMP '2021-06-28 10:30:15') as year;

Extrahera en månad

SELECT EXTRACT(Month FROM TIMESTAMP '2021-06-28 10:30:15') as Month;

Extrahera en fjärdedel

SELECT EXTRACT(QUARTER FROM TIMESTAMP '2021-06-28 10:30:15') as QUARTER;

Extrahera veckodagen

SELECT EXTRACT(DOW FROM TIMESTAMP '2021-06-28 10:30:15') as DOW ;

Extrahera årets dag

SELECT EXTRACT(DOY FROM TIMESTAMP '2021-06-28 10:30:15') as DOY ;

Du kan också använda EXTRACT()-funktionen i kombination med ett INTERVAL. Till exempel nedan anger vi intervallet som 7 år 9 månader 20 dagar 09 timmar 12 minuter och 13 sekunder. Extrahera-funktionen returnerar de individuella värdena.

SELECT EXTRACT(YEAR
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(Month
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(Day
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(hour
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' ),
EXTRACT(Minute
FROM INTERVAL '7 years 9 months 20 days 09 hours 12 minutes 13 second' );
;

VID TIDZON

Ibland måste du konvertera tidsstämpeln till en annan tidszon. Du kan till exempel lagra datumvärden i UTC (Universal Time Coordinator) och konvertera tidszonen efter behov.

SELECT * FROM pg_timezone_names;

För att kontrollera den aktuella tidszonen, använd VISA TIDZON som visas nedan.

Du kan välja önskat tidszonvärde från pg_timezone_names och använda AT TIME ZONE för att få utdata per den angivna tidszonen.

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'America/Chicago';

På liknande sätt kan vi få olika tidszonsutgångar med AT TIME ZONE.

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'America/New_York';

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'Asia/Qatar';

SELECT '2021-06-28 07:09:19'::timestamp AT TIME ZONE 'Europe/Istanbul';

Sammanfattning

Postgres datumtyper är viktiga och värdefulla när du lagrar datum och tidsstämplar i nästan varje tabell i en relationsdatabas. Du behöver dem för olika ändamål såsom orderinförande eller vid uppdatering av tidsstämpel, köp och försäljningsorder, händelsedetaljer, kund- och anställdinformation med mera. Du kan använda flera Postgres-funktioner för att konvertera en datumtyp till önskad tidszon, format och specifik information för att förenkla extraheringen och analysen av dina data.


  1. SQL Server - Inkludera NULL med UNPIVOT

  2. Returnerar strängarray och använd den på AutoCompleteTextview

  3. Importera shapefiler i postgresql i linux med pgadmin 4

  4. SQL Server:Isolationsnivå läcker över poolade anslutningar