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

Come estrarre il numero della settimana da una data in PostgreSQL

Problema:

Vuoi ottenere il numero della settimana di una data o un valore di timestamp in un database PostgreSQL.

Esempio:

Il nostro database ha una tabella denominata children con i dati nelle colonne id , first_name , last_name e birth_date .

id nome cognome data_di_nascita
1 Angela Michelin 01-01-2018
2 Martin Jackson 26-07-2002
3 Giustino Clark 26-12-2010
4 Franco Barker 08-06-2008

Per ogni bambino, prendiamo il nome, il cognome e il numero della settimana della sua data di nascita.

Soluzione 1:

Useremo il DATE_PART() funzione. Ecco la domanda che scriveresti:

SELECT first_name,
	 last_name,
       DATE_PART('week',birth_date) 
         AS  birth_week_number
FROM children;

Ecco il risultato della query:

first_name cognome numero_settimana_nascita
Angela Michelin 1
Martin Jackson 30
Giustino Clark 51
Franco Barker 23

Discussione:

Usa il DATE_PART() funzione per recuperare il numero della settimana da una data in un database PostgreSQL. Questa funzione accetta due argomenti. Il primo argomento è la parte della data da recuperare; usiamo 'week', che restituisce il numero della settimana (es. "1" per la prima settimana di gennaio, la prima settimana dell'anno). Puoi usare un'altra parte della data, come giorno, anno, mese, ora, minuto, doy (il numero del giorno nell'anno), ecc. Puoi saperne di più sulle parti della data nella documentazione di PostgreSQL.

Il secondo argomento è un nome di colonna del tipo di dati date/timestamp/timestamptz o un'espressione che restituisce uno di questi tipi. (Nel nostro esempio, è una colonna della data tipo di dati.)

Se utilizzata con la parte della data "settimana", la funzione DATE_PART() restituisce il numero della settimana come numero intero. Nel nostro esempio, viene visualizzato il numero della settimana per la data di nascita del bambino; abbiamo chiamato questa colonna birth_week_number . Martin Jackson è nato il 2002-07-26 , quindi la funzione restituisce '30' come numero della settimana della sua data di nascita.

DATE_PART() non è solo un modo per ottenere il numero della settimana. Un'altra opzione è usare EXTRACT() funzione.

Soluzione 2:

Useremo il EXTRACT() funzione. Ecco la domanda che scriveresti:

SELECT first_name,
	 last_name,
       EXTRACT('week' FROM birth_date) 
         AS  birth_week_number
FROM children;

Questa funzione è simile a DATE_PART() . La differenza è nella sintassi:invece di una virgola tra il nome della parte data e la colonna/espressione, c'è la parola chiave FROM. Inoltre, il EXTRACT() la funzione è standard SQL. Il risultato è lo stesso per entrambe le funzioni.