back to top

Funzioni MySQL per la gestione di date e orari

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().

FunzioneFormato 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:

FunzioneUtilizzo
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
Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).

In questa guida...