Corsi on-line

Formattare le date recuperate da un database

  • CommentiScrivi un commento
  • ForumDiscuti sul forum
  • PrevPHP e XML. Il parsing con DOMXML
  • NextMigrare da ASP a PHP

Uno dei problemi più comuni che affliggono gli sviluppatori alle prime armi con PHP è certamente quello della formattazione delle date.
Al interno di questo macro-problema è poi possibile individuarne una sottospecie ancora più frequente: la formattazione delle date recuperate da un database.

Come sappiamo (o dovremmo sapere) ogni database ha delle funzioni proprietarie per la gestione delle date.
Per fare un esempio di sicura utilità ai fini di questo articolo, è opportuno ricordare che MySQL utilizza la funzione CURDATE per recuperare la data corrente. Il problema è che la data viene gestita nel formato americano (YYYY-MM-DD) e non in quello consueto per noi italiani (DD/MM/YYYY).
Ne consegue che spesso si ha la necessità, dopo aver recuperato dal database una data precedentemente inseritavi tramite CURDATE, di trasformare il risultato in qualcosa di un poco più... italiano!
Per fare ciò possiamo seguire due strade:

1. Possiamo usare un po' di PHP...

L'articolo continua dopo la pubblicità

Con un pizzico di codice possiamo facilmente risolvere i problema e trasformare la data dal formato YYYY-MM-DD a quello DD/MM/YYYY, semplicemente utilizzando la funzione explode.
Nel codice di esempio che vi riporto qui sotto potete vedere una funzione già pronta per fare il lavoro:

<?
function data_it($data)
{
  // Creo una array dividendo la data YYYY-MM-DD sulla base del trattino
  $array = explode("-", $data); 

  // Riorganizzo gli elementi in stile DD/MM/YYYY
  $data_it = $array[2]."/".$array[1]."/".$array[0]; 

  // Restituisco il valore della data in formato italiano
  return $data_it; 
}

// Recupero dal DB una data (nel formato YYYY-MM-DD)
$sql = "SELECT data FROM agenda WHERE id = 1";

$row = mysql_fetch_assoc(mysql_query($sql));

// Uso la funzione per stampare la stessa data in formato italiano
echo data_it($row['data']);
?>
2. ...oppure la funzione DATE_FORMAT di MySQL!

In realtà il problema è risolvibile in modo ancora più semplice e senza scrivere nemmeno una riga di codice PHP: MySQL, infatti, dispone già di una funzione ad hoc per far fronte a questa esigenza, la funzione DATE_FORMAT.
Vediamo un esempio di SELECT che ci consente di ottenere lo stesso risultato frutto del codice PHP che abbiamo visto sopra.

SELECT DATE_FORMAT(campo_data, '%d/%m/%Y') as data_it FROM tabella
Tornando all'esempio di prima, quindi, avremmo potuto usare:
<?
$sql = "SELECT DATE_FORMAT(data, '%d/%m/%Y') as data_it 
          FROM agenda WHERE id = 1";

$row = mysql_fetch_assoc(mysql_query($sql));

echo $row['data_it'];
?>
A questo punto il valore recuperato dal nostro database sarà già pronto per essere utilizzato.

Corsi
  • Corso Linux
    Corso Linux
    Guida completa al sistema open-source. A partire da 39 €
  • Corso MySQL
    Corso MySQL
    Gestione del database open-source. A partire da 39 €
  • Corso PHP
    Corso PHP
    Creare siti web dinamici avanzati con PHP e MySQL. A partire da 39 €
Vedi anche...
Guide