PostgreSQL

Postgresql Generate_Series per creare una serie di date

Postgresql Generate_Series per creare una serie di date

Devi avere familiarità con l'immissione dei dati in qualsiasi sistema di gestione di database. Durante l'inserimento dei dati, potresti non avere tempo e devi ignorare le lacune nei tuoi dati o desiderare una serie coerente di record. In questa situazione, PostgreSQL generate_series è applicabile per raggiungere l'obiettivo richiesto. Come indica il nome, il meccanismo di questa funzione contiene 2 o 3 ingressi. io.e., generate_series consente di generare una sequenza di record con un punto iniziale, un punto finale e un valore incrementale (opzionale). Funziona principalmente su due tipi di dati. io.e., Interi e timestamp. Per creare una sequenza di date, la funzione generate_series viene utilizzata in diversi modi.

Sintassi:

>> Generate_series ([start],[stop],[optional step/interval]);

La descrizione della sintassi della query è la seguente:

Diamo un'idea di come può funzionare la funzione generate_series(). Di seguito sono riportati alcuni esempi elementari. Per comprendere il concetto di questa funzione, è necessario installare e aprire la shell della riga di comando di postgreSQL (psql).

Dopo la configurazione corretta e fornendo localhost, nome del database, numero di porta e password, possiamo eseguire qualsiasi query su psql.

Esempio 01: Generate_series utilizzando l'operatore DATE più intero

La seguente query contiene una funzione integrata "DATA" per recuperare la data corrente. Considerando che "a" è l'operatore fornito. La funzione di questo operatore è aggiungere quel particolare numero (intervallo) nella parte del giorno della data. O in altre parole, con intervalli specifici, i giorni vengono spostati e mostrati nella data. In uscita, l'intervallo “9” verrà aggiunto ogni giorno, i.e., 9+9=18, poi 27, e così via, fino a raggiungere la somma di 40.

>> SELECT data_corrente + s.a AS date FROM Generate_series(0,40,9) AS s(a);

Esempio 02: utilizzo della data corrente per generare serie di date

Per generare serie di date con l'aiuto della data corrente, stiamo utilizzando la funzione now(), che prende automaticamente la data corrente dal sistema. Puoi vedere che l'output corrispondente mostra la data fino a 4 giorni. Questo perché abbiamo limitato l'esecuzione aggiungendo 4 giorni alla data corrente. Poiché abbiamo fornito l'intervallo di tempo a 1 giorno, ogni data verrà incrementata con 1 aggiunta al giorno

>> select * from generate_series(now(), now() + '4 giorni', '1 giorno');

Esempio 03: generazione di serie di date utilizzando timestamp

Timestamp delle ore: Questa funzione utilizza anche il tipo di dati dei timestamp. Il timestamp è fondamentalmente una sequenza di caratteri che fornisce l'ora e la data di un giorno correlato. La funzione corrispondente facilita l'utente nel fornire le date tra le due date che abbiamo usato per anticipare nella query. Si ottiene l'elenco delle marche temporali dalla data 7 alla 11 con una marca temporale ogni 5 ore.

>> select * from generate_series('2021-3-7 00:00' ::timestamp,'2021-3-11 12:00', '5 ore');

La query, come detto sopra, serve anche per sommare minuti e secondi alle ore per acquisire un migliore timestamp tra i giorni del timestamp rilevante.

Timestamp dei giorni: Nell'esempio in eccesso, abbiamo visto che il timestamp viene utilizzato per mostrare le date comprese tra le due rispettive date che abbiamo fornito con l'alterazione in ore incrementata di 5. Nell'esempio attuale, vedremo il timestamp in giorni. I giorni vengono incrementati di 2 poiché abbiamo avviato un intervallo di 2 giorni nell'output specifico.

>> select * from generate_series('2021-03-01'::timestamptz,'2021-03-19'::timestamptz,'2 days');

Esempio 04: generazione di date specifiche del mese utilizzando date_trunc

Primo giorno del mese

Se vogliamo generare la prima data del mese corrente utilizzeremo la query allegata di seguito.La funzione distinta usata qui è date_trunc, che tronca la data con una precisione data.io.e. adesso()

>> select date_trunc('mese',ora());

      Ultimo giorno del mese

Lo stesso approccio date_trunc genererà l'ultimo giorno del mese.

>> select date_trunc('month',now()) + '1 month'::interval - '1 day'::interval as end_of_month;

Metà mese

La metà del mese si ottiene modificando nella query precedente. Utilizzeremo la funzione media per ottenere il rispettivo obiettivo. Oppure sottraiamo 17 giorni dall'ultimo.

>> select date_trunc('month',now()) + '1 month'::interval - '17 days'::interval as mid_of_month;

Esempio 05: generazione di date utilizzando dati relativi al calendario

Ecco l'esempio dell'utilizzo dei dati del calendario. Verremo a conoscere l'anno bisestile, io.e., giorni totali nel mese di febbraio."t" indica vero significa che l'anno è bisestile e per "f" è falso "dow" rappresenta i giorni della settimana. La colonna "Feb" contiene i giorni totali del mese. "giorno" indica il primo giorno di gennaio di ogni anno. Secondo la ricerca, le settimane di ISO iniziano da lunedì e la prima settimana di un anno contiene il 5 gennaio dell'anno.

>> select date::date,extract('isodow' from date) as dow,to_char(date, 'dy') as day,extract('iso year' from date) as "iso anno", extract('week' from date) as week,extract('day'from (date + interval '2 month - 1 day'))as feb,extract('year' from date) as year,extract('day' from (date + interval ' 2 mesi - 1 giorno')) = 29as salto da generate_series(data '2010-01-01', data '2020-03-01', intervallo '1 anno') as t(data);

Isodow è il giorno della settimana standard "ISO". La query verrà eseguita dal 2010 al 2020 manipolando ogni mese, settimana e giorno dell'anno.

Esempio 06: generazione di serie di date specifiche e numero di giorni nella settimana

In questa query, acquisiremo date e numeri di giorni filtrando i giorni in una settimana. Considereremo numericamente i giorni della settimana. Ad esempio, partendo da 0 a 6. Dove 0 è domenica e 6 è sabato. In questa query, vedrai che abbiamo applicato una condizione per portare date e numeri di giorni che non sono in 2 e 5. Ad esempio, il 20 febbraio era sabato, quindi il numero che è apparso è 6.

>> con giorni come (select dd, extract(DOW from dd) dw from generate_series('2021-02-20'::date,'2021-03-05'::date,'1 day'::interval) dd ) seleziona *da   giorni in cui  dw non in (2,5);

Conclusione

L'articolo, come accennato in precedenza, copre la maggior parte delle funzionalità di base relative alla generazione di serie per creare serie di date. Gli esempi dettagliati discussi in ogni aspetto sono così significativi che aumenteranno la conoscenza del tuo rispettivo articolo.

Come mostrare il contatore FPS nei giochi Linux
I giochi Linux hanno avuto una grande spinta quando Valve ha annunciato il supporto Linux per il client Steam e i loro giochi nel 2012. Da allora, mol...
Come scaricare e giocare a Sid Meier's Civilization VI su Linux
Introduzione al gioco Civilization 6 è una versione moderna del concetto classico introdotto nella serie dei giochi Age of Empires. L'idea era abbasta...
Come installare e giocare a Doom su Linux
Introduzione a Doom La serie Doom è nata negli anni '90 dopo l'uscita dell'originale Doom. È stato un successo immediato e da quel momento in poi la s...