MySQL è molto generoso in merito alla gestione di date e orari, sono infatti davvero tante le funzioni interne che il DBMS mette a nostra disposizione per trattare con questo particolare tipo di dato. In questa sede non è possibile passarle in rassegna una ad una, ma ci limiteremo a vedere le più importanti e comunemente tilizzate.
Data e orario corrente
Tra queste sicuramente vanno menzionate le funzioni per l’ottenimento di data e ora corrente: NOW(), CURDATE() e CURTIME().
Funzione | Formato della risposta |
---|---|
NOW() | AAAA-MM-GG HH:MM:SS |
CURDATE() | AAAAA-MM-GG |
CURTIME() | HH:MM:SS |
Per fare un esempio si ipotizzi di voler inserire la data corrente all’interno del campo "data" di una tabella "calendario":
INSERT INTO calendario (data) VALUES (CURDATE())
Operazioni sulle date
Altre funzioni di grande importanza nella gestione delle date sono le funzioni per la somma e la sottrazione del tempo. Nella tabella che segue vediamo le principali:
Funzione | Utilizzo |
---|---|
DATE_ADD() | DATE_ADD(data, INTERVAL espressione tipo) |
DATE_SUB() | DATE_SUBB(data, INTERVAL espressione tipo) |
PERIOD_ADD() | PERIOD_ADD(Periodo, Mesi) – il Periodo va espresso informato AAAAMM oppure AAMM |
PERIOD_SUBB() | PERIOD_SUB(Periodo1, Periodo2) – il Periodo va espresso informato AAAAMM oppure AAMM |
Di seguito alcuni esempi:
Supponiamo di voler sommare 10 giorni alla data corrente:
SELECT DATE_ADD(CURDATE(),INTERVAL 10 DAYS);
Effetuiamo la sottrazione di 2 mesi da una data specifica:
SELECT DATE_SUB('2015-04-15',INTERVAL 2 MONTHS);
Aggiungiamo 7 mesi al mese di aprile 2015:
SELECT PERIOD_ADD(201504,7);
Togliamo 3 mesi al mese di gennaio 2015:
SELECT PERIOD_ADD(201501,-3);
Calcoliamo la differenza (espressa in mesi) tra il gennaio 2015 ed ottobre 2012:
SELECT PERIOD_SUB(201501,201210);
Per finire una breve precisazione: quelle viste fin qui non sono che una piccola parte delle funzioni interne che MySQL prevede per la gestione di date e orari. Vi rimando quindi alla documentazione ufficiale per vedere le (tante) altre funzioni che, sono certo, vi torneranno spesso utili nello sviluppo di applicazioni pratiche.
Formattare date e orari
Altre due interessanti funzioni di MySQl sono DATE_FORMAT() e TIME_FORMAT() le quali servono, rispettivamente, per formattare una data e un orario.
Queste due funzioni, che si comportano in modo analogo, richiedono due argomenti:
- il primo è la data da formattare;
- il secondo è una stringa composta da alcuni caratteri speciali, preceduti dal simbolo "%" la quale svolge la funzione di "modello" per la risposta.
Vediamo di seguito quali sono questi caratteri speciali:
- %d – giorno del mese numerico 00…31
- %M – nome del mese January … December
- %m – mese numerico 00 … 12
- %H – ora 00 … 23
- %i – minuti 00 … 59
- %s – secondi 00 … 59
- %Y – anno di quattro cifre
- %y – anno di due cifre
Vediamo un esempio di utilizzo di DATE_FORMAT():
SELECT DATE_FORMAT('2015-04-15 14:33:23','%d-%m-%Y alle ore %H');
La risposta prodotta da MySQL sarà:
15-04-2015 alle ore 15