Introduzione
Quando lavori con i database SQL, PostgreSQL compreso, saper manipolare e interrogare dati di data e ora è una competenza fondamentale. Spesso le applicazioni richiedono analisi o report focalizzati sui giorni feriali, escludendo i weekend. In questo tutorial vedremo come selezionare i record solo in base ai giorni feriali, sfruttando le funzioni di data e ora di PostgreSQL.
Capire data e ora in PostgreSQL
PostgreSQL offre un set completo di funzioni e operatori per lavorare con date e orari, rendendo semplice eseguire query complesse, come selezionare le righe in base ai giorni feriali.
Tipi di dati data/ora
Prima di passare alle query sui giorni feriali, è utile conoscere i principali tipi di dati data/ora di PostgreSQL:
-
DATE: per le date (anno, mese, giorno). -
TIMESTAMP: per data e ora, senza fuso orario. -
TIMESTAMPTZ: per data e ora, con fuso orario. -
TIME: solo per l'ora, senza fuso orario. -
TIMETZ: solo per l'ora, con fuso orario.
La funzione EXTRACT
Una funzione chiave per lavorare con i giorni feriali è EXTRACT. Ti permette di estrarre parti di un valore data/ora, come il giorno della settimana.
Interrogare solo i giorni feriali
Per selezionare i record che cadono nei giorni feriali (dal lunedì al venerdì), puoi usare la funzione EXTRACT per ottenere il giorno della settimana da una data, dove la domenica è 0 e il sabato è 6.
Selezione base dei giorni feriali
Ecco come filtrare le righe per includere solo i giorni feriali:
-- Assuming a table 'events' with a 'date' column
SELECT *
FROM events
WHERE EXTRACT(DOW FROM date) BETWEEN 1 AND 5;
Questa query seleziona le righe della tabella events in cui il giorno della settimana della colonna date è compreso tra 1 (lunedì) e 5 (venerdì), estremi inclusi.
Output:
| id | date | event_name |
|---|---|---|
| 1 | 2024-03-04 | Lancio del progetto |
| 2 | 2024-03-05 | Riunione del team |
Scenari complessi: join tra tabelle e filtro per giorni feriali
Vediamo un esempio più complesso in cui devi fare il join tra tabelle e filtrare comunque per giorni feriali.
-- Assuming another table 'event_details' that references 'events'
SELECT e.*, ed.detail
FROM events e
JOIN event_details ed ON e.id = ed.event_id
WHERE EXTRACT(DOW FROM e.date) BETWEEN 1 AND 5;
Questa query non solo filtra gli eventi per giorni feriali, ma fa anche il join con la tabella event_details per recuperare i dati correlati.
Output:
| id | date | event_name | detail |
|---|---|---|---|
| 1 | 2024-03-04 | Lancio del progetto | Riunione di kick-off |
| 2 | 2024-03-05 | Riunione del team | Revisione mensile |
Casi d'uso
Analizzare le ore di lavoro
Per le aziende che tengono traccia delle ore di lavoro, escludere i weekend può offrire spunti su produttività e costo del lavoro.
-- Assuming a table 'work_hours' with 'employee_id', 'date', and 'hours_worked'
SELECT employee_id, SUM(hours_worked) AS total_hours
FROM work_hours
WHERE EXTRACT(DOW FROM date) BETWEEN 1 AND 5
GROUP BY employee_id;
Questa query calcola il totale delle ore lavorate da ogni dipendente nei giorni feriali.
Output:
| employee_id | total_hours |
|---|---|
| 101 | 40 |
| 102 | 38 |
Pianificazione di eventi
Per chi organizza eventi, concentrarsi sui giorni feriali può aiutare a organizzare e programmare gli eventi in modo più efficiente.
-- Finding available event dates during weekdays
SELECT date
FROM events
WHERE EXTRACT(DOW FROM date) BETWEEN 1 AND 5
AND date > CURRENT_DATE
ORDER BY date;
Questo aiuta a individuare le prossime date feriali per pianificare eventi futuri.
Output:
| date |
|---|
| 2024-03-06 |
| 2024-03-07 |
Conclusione
Selezionare i record in base ai giorni feriali in PostgreSQL è una tecnica utile per l'analisi dei dati e la logica applicativa. Sfruttando le funzioni di data e ora di PostgreSQL, in particolare EXTRACT, puoi filtrare facilmente i dati secondo le tue esigenze. Che tu stia analizzando operazioni aziendali, pianificando eventi o semplicemente gestendo calendari, saper interrogare i giorni feriali arricchirà le tue competenze sui database.
Esercitati con questi esempi, esplora la documentazione di PostgreSQL per altre funzioni data/ora e ricava più informazioni dai tuoi dati.
Buone query!
Beekeeper Studio è una GUI per database gratuita & open source
Il miglior strumento per query & editor SQL che abbia mai usato. Offre tutto ciò che mi serve per gestire il mio database. - ⭐⭐⭐⭐⭐ Mit
Beekeeper Studio è veloce, intuitivo e facile da usare. Beekeeper supporta tantissimi database e funziona alla grande su Windows, Mac e Linux.
Cosa dicono gli utenti di Beekeeper Studio
"Beekeeper Studio ha sostituito completamente il mio vecchio workflow SQL. È veloce, intuitivo e rende di nuovo piacevole lavorare con i database."
"Ho provato molte GUI per database, ma Beekeeper trova il perfetto equilibrio tra funzionalità e semplicità. Funziona e basta."