3.1 Elenco delle funzioni per lavorare con data e ora
Data e ora sono uno dei tipi più comuni di dati archiviati nei database. Ecco perché l'elenco delle funzioni per lavorare con loro è molto ampio. Ecco i più popolari:
# | Funzione | Descrizione |
---|---|---|
1 | CURDATA() | Restituisce la data corrente |
2 | CURTIME() | Restituisce l'ora corrente |
3 | ORA(), ORALOCALE() | Restituisce la data e l'ora correnti |
4 | ANNO() | Restituisce l'anno dalla data |
5 | MESE() | Restituisce il mese da una data |
6 | GIORNO(), GIORNOMESE() | Restituisce il giorno da una data |
7 | ORA() | Restituisce solo ore dal tempo |
8 | MINUTI() | Annuncia minuti dal tempo |
9 | SECONDO() | Restituisce secondi dal tempo |
10 | NOMEGIORNO() | Restituisce il nome del giorno della settimana: lunedì, ... |
undici | NOMEMESE() | Restituisce il nome del mese: gennaio, ... |
12 | SETTIMANA() | Restituisce la settimana da una data |
13 | GIORNO SETTIMANALE() | Restituisce il numero del giorno della settimana: lunedì - 0, martedì - 1 |
14 | SETTIMANA ANNO() | Restituisce il numero della settimana dell'anno |
15 | GIORNO DELLA SETTIMANA() | Restituisce il numero del giorno della settimana: domenica - 1, lunedì - 2 |
16 | GIORNO DELL'ANNO() | Restituisce il giorno dell'anno: 1-366 |
17 | DATA() | Restituisce solo la data da un oggetto "datetime". |
18 | AGGIUNGI() | Aggiunge giorni a una data |
19 | SUBDATA() | Sottrae giorni da una data |
20 | ADDTIME() | Aggiunge di volta in volta |
21 | SUBTIME() | Sottrae il tempo dal tempo |
Ho deliberatamente raggruppato le funzioni in piccoli gruppi per facilitare la comprensione di come lavorarci. Di seguito considereremo una funzione per ciascun gruppo.
Puoi trovare un elenco completo delle funzioni per lavorare con data e ora al link: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
3.2 Funzioni di chiamata
A proposito, dal momento che stiamo imparando così tante funzioni, penso sia utile menzionare che l'operatore SELECT
non deve essere utilizzato con FROM
. Può restituire il valore di qualsiasi espressione. La cui visione generale è data dal modello:
SELECT expression
E se vuoi chiamare qualche funzione, allora devi scrivere codice come:
SELECT function(options)
Di seguito darò alcuni esempi del funzionamento dell'operatore SELECT
senza ricorrere a tabelle:
# | Richiesta | Risultato |
---|---|---|
1 | SELEZIONA 1+1 | 2 |
2 | SELEZIONA 13 MODULO 5 | 3 |
3 | SELEZIONA CASUALE() | 0.20771444235715497 |
4 | SELEZIONA CURDATA() | 2022-06-04 |
5 | SELEZIONA TEMPO CURVA() | 00:06:02 |
6 | SELEZIONA ORA() | 2022-06-04 00:06:43 |
E, come puoi vedere, nella tabella sopra, per ottenere la data e l'ora correnti, devi solo utilizzare una delle funzioni:
CURDATE()
- data odierna;CURTIME()
- ora attuale;NOW()
– data e ora correnti.
3.3 Raggruppamento dei dati per anno e mese
Ricordiamo la nostra tabella delle attività con le attività per i dipendenti. Proviamo a raggruppare le attività di questa tabella per anni. Per fare questo usiamo la funzione YEAR()
, che restituisce l'anno dalla data che le è passata.
La prima versione della nostra query sarà simile a questa:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
deadline
FROM task
Il risultato di questa query sarà:
id | ID Dipendente | nome | anno | scadenza |
---|---|---|---|---|
1 | 1 | Risolto un bug sul frontend | 2022 | 2022-06-01 |
2 | 2 | Risolto un bug sul backend | 2022 | 2022-06-15 |
3 | 5 | Compra il caffè | 2022 | 2022-07-01 |
4 | 5 | Compra il caffè | 2022 | 2022-08-01 |
5 | 5 | Compra il caffè | 2022 | 2022-09-01 |
6 | (NULLO) | Pulisci l'ufficio | (NULLO) | (NULLO) |
7 | 4 | Goditi la vita | (NULLO) | (NULLO) |
8 | 6 | Goditi la vita | (NULLO) | (NULLO) |
Possiamo vedere che tutte le righe hanno lo stesso anno, quindi usiamo due campi: anno e mese. La seconda versione della nostra query sarà simile a questa:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
MONTH(deadline) AS month,
deadline
FROM task
Il risultato di questa query sarà:
id | ID Dipendente | nome | anno | mese | scadenza |
---|---|---|---|---|---|
1 | 1 | Risolto un bug sul frontend | 2022 | 6 | 2022-06-01 |
2 | 2 | Risolto un bug sul backend | 2022 | 6 | 2022-06-15 |
3 | 5 | Compra il caffè | 2022 | 7 | 2022-07-01 |
4 | 5 | Compra il caffè | 2022 | 8 | 2022-08-01 |
5 | 5 | Compra il caffè | 2022 | 9 | 2022-09-01 |
6 | (NULLO) | Pulisci l'ufficio | (NULLO) | (NULLO) | (NULLO) |
7 | 4 | Goditi la vita | (NULLO) | (NULLO) | (NULLO) |
8 | 6 | Goditi la vita | (NULLO) | (NULLO) | (NULLO) |
Non ti dirò come raggruppare le attività per anno e mese: l'hai già studiato: usa l'operatore GROUP BY
.