PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Comprensione dei tipi di data e delle funzioni di PostgreSQL (tramite esempi)

In questo articolo, esamineremo il lavoro con le date in PostgreSQL, inclusi i vari tipi e formati di dati delle date, le loro funzioni e i modi per gestirli nella routine quotidiana. Useremo dbForge Studio per PostgreSQL per illustrare gli esempi.

È possibile utilizzare date e timestamp per l'analisi e l'archiviazione dei dati, poiché consentono di determinare quando si è effettivamente verificato un evento. La cosa difficile delle date è che i loro formati variano nei diversi paesi, quindi può essere un compito piuttosto impegnativo per i principianti nella gestione del database. Il tipo di dati e il formato della colonna della data devono essere sempre coerenti con le informazioni immesse dall'utente. Inoltre, dovresti modificare il formato della data per soddisfare le preferenze dei tuoi utenti. Postgres è in grado di gestire un'ampia gamma di formati di dati.

Contenuti

  • Panoramica del tipo di dati DATE PostgreSQL
  • Utilizzo della data corrente come valore predefinito
  • Funzioni DATE di Postgres
  • Utilizzare la funzione ADESSO() per ottenere la data corrente
  • Utilizzo della funzione TO_CHAR():output del valore della data in un formato specificato
  • Utilizzare l'operatore meno per ottenere l'intervallo tra due date
  • Utilizzo della funzione AGE() per ottenere la differenza di data in anni, mesi e giorni
  • Utilizzare la funzione EXTRACT() per ottenere anno, trimestre, mese, settimana, giorno da un valore di data
  • Utilizzo di TO_TIMESTAMP() per convertire una stringa in un timestamp
  • Riepilogo

Panoramica del tipo di dati DATE PostgreSQL

DATE il tipo di dati in PostgreSQL viene utilizzato per memorizzare le date nel formato AAAA-MM-GG (ad es. 24-03-2022). Sono necessari 4 byte per memorizzare un valore di data in una colonna. Nota che la prima data possibile è il 4713 aC e l'ultima data possibile è il 5874897 dC.

È estremamente importante mantenere la leggibilità del codice nella fase di scrittura. dbForge Studio per PostgreSQL può vantare un formattatore PostgreSQL comodo e intuitivo. Prendendosi cura della formattazione del codice, del controllo della sintassi e del completamento del codice, la funzione di formattazione SQL di Postgres integrata dbForge Studio per PostgreSQL ti consentirà di rimanere concentrato anche sulla gestione del tipo di dati DATE.

Utilizzando la data corrente come valore predefinito

Il valore predefinito in un DATE colonna in un database Postgres può essere impostata utilizzando la parola chiave DEFAULT CURRENT DATE , come nello script seguente:

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;

Come puoi vedere, un valore per [data evento] la colonna viene inserita automaticamente dal server PostgreSQL, utilizzando la data di sistema corrente nel formato AAAA-MM-GG.

Funzioni DATE di Postgres

A volte, è fondamentale modificare il formato della data o calcolare i valori nella tabella PostgreSQL. Potrebbe essere necessario farlo per utenti di diversi fusi orari in tutto il mondo. In questo caso, le funzioni SQL sono cruciali.

Utilizzo della funzione ADESSO() per ottenere la data corrente

SELECT now();

Puoi usare i due punti doppi (::) per trasmettere un DATETIME valore a un DATE valore come mostrato di seguito:

Il timestamp di sistema corrente viene restituito da NOW() funzione. La sintassi è la seguente:

SELECT now()::date;

Utilizzando la funzione TO_CHAR() – genera il valore della data in un formato specificato

Per presentare l'output di un valore di data Postgres in un formato specificato, il TO_CHAR() la funzione torna utile. La sintassi è la seguente:

TO_CHAR(expression, format)

Ci sono due parametri accettati da TO_CHAR() funzione:

  • Inserimento data :la data da convertire in un formato specifico.
  • Formato data :il segnaposto per una nuova specifica del formato della data.

Vediamo come convertire i valori di data esistenti da [MyEvents] tabella nel formato GG-MM-AAAA.

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

Per convertire il timestamp corrente nel formato preferito, puoi fondere TO_CHAR() e il NOW() funzioni.

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

Utilizzo dell'operatore meno per ottenere l'intervallo tra due date

Per calcolare la differenza tra due date, utilizzare l'operatore meno (-). La query seguente fornisce il periodo di tempo tra il timestamp attuale e [eventdate] da MyEvents tavolo.

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

Puoi anche selezionare un intervallo per la data da restituire quando è trascorso un certo periodo di tempo. Dai un'occhiata alla domanda qui sotto:

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;

Utilizzo della funzione AGE() per ottenere la differenza di data in anni, mesi e giorni

Con AGE() funzione, è possibile ottenere la differenza di data in anni, mesi e giorni. Questa funzione può essere utilizzata per determinare l'età di una persona. Il primo valore di data viene sottratto dal secondo valore di data con questa funzione, che accetta due input di data. Quando i valori nello script della funzione vengono invertiti, il risultato è un valore negativo.

Scopriamo l'età della persona la cui data di nascita è 1995-10-09. La sintassi è la seguente:

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

Utilizzo della funzione EXTRACT() per ottenere anno, trimestre, mese, settimana, giorno da un valore di data

Il EXTRACT() La funzione restituisce un giorno, una settimana, un mese, un anno e un trimestre dal valore di data specificato.

Estrarre un anno:

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

Estrarre un mese:

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

Estrarre un quarto:

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

Estrai il giorno della settimana:

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

Estrarre il giorno dell'anno:

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

Tieni presente che dbForge Studio visualizza i risultati dell'esecuzione della query ciascuno in una scheda separata.

Il EXTRACT() la funzione può essere facilmente combinata con INTERVAL . Supponiamo di voler impostare l'intervallo come 5 anni 8 mesi 23 giorni 08 ore 10 minuti e 20 secondi. I singoli valori vengono restituiti da EXTRACT funzione.

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

Utilizzo di TO_TIMESTAMP() per convertire una stringa in un timestamp

Puoi mantenere i valori della data in UTC (Universal time coordinator) e modificare il fuso orario secondo necessità se desideri convertire il timestamp in un fuso orario diverso.

SELECT * FROM pg_timezone_names;

Per controllare il fuso orario corrente, usa SHOW TIMEZONE comando.

Puoi usare AT TIME ZONE per ricevere l'output per il fuso orario scelto selezionando il valore del fuso orario necessario da pg_timezone_names tabella.

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

AT TIME ZONE permette di avere diverse uscite di fuso orario.

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

Riepilogo

Per riassumere, il DATE di PostgreSQL il tipo di dati è molto importante e utile quando si archiviano date e timestamp nelle tabelle, quindi è abbastanza comune in un database relazionale. La gamma del loro utilizzo è incredibilmente ampia, ecco perché è così importante renderli chiari a qualsiasi utente in qualsiasi paese e fuso orario. Con varie funzioni di Postgres, è facile soddisfare le esigenze degli utenti, poiché puoi modificare le date in modo che possano essere utilizzate in un fuso orario specifico, con un determinato formato e altri dettagli che rendono molto più semplice lavorare con tali dati. Infine, se stai cercando una perfetta combinazione tra un'interfaccia grafica intuitiva e una riga di comando aumentata che possa far funzionare il DATE tipo di dati ancora più piacevole, dbForge Studio per PostgreSQL tornerà utile.