Gestire le date in php e MySQL
Funzioni php
Conversione data
Convertire la data da formato europeo (gg/mm/aaaa) in formato americano (aaaa-mm-gg) per inserirla in una tabella MySQL
function convertiData($dataEur){
$rsl = explode ('/',$dataEur);
$rsl = array_reverse($rsl);
return implode($rsl,'-');
}
Esempio
<?php echo convertiData("01/02/2003"); ?>
da come risultato => 2003-02-01
Visualizzare la data
Per visualizzare la data di oggi si utilizza la funzione date() indicando come argomento il formato che ci interessa
<?php echo date("d/m/Y"); ?>
da come risultato
09/02/2010
Per informazioni sui vari formati della data si può consultare il sito ufficiale di php qui
Per stampare la data nell'anno successivo, come ad esempio per le date di scadenza si può utilizzare
<?php echo strftime("%d/%m/%Y",mktime(0,0,0,date("m"), date("d"), date("Y")+1)); ?>
che da come risultato
09/02/2011
Funzioni Mysql
Query
Se una tabella contiene un campo date, è possibile visualizzare il giorno in formato gg/mm/aaaa utilizzando la funzione MySQL date_format.
date_format(<campo>,'%d/%m/%Y')
Esempio
La tabella fattura contiene il campo giorno di tipo date. Eseguendo la query
SELECT date_format(giorno,'%d/%m/%Y') giorno FROM fattura
si otterranno tutte le date delle fatture.
Per informazioni sui vari formati da utilizzare in date_format si può consultare il sito ufficiale di MySQL qui
Calcolare il giorno della settimana
Per sapere se un giorno è lunedì o martedì, ecc utilizzare
ELT(DAYOFWEEK(<campo data>),'dom','lun','mar','mer','gio','ven','sab')
Test se una data sta per scadere 1 mese prima
Supponiamo che il campo scadenza contiene delle date, vogliamo evidenziare le date in cui manca un mese alla scadenza. Con il seguente test nel campo staperscadere avremo i valor si/no a seconda della data di scadenza
IF( (date_add(scadenza, interval -1 month) < now())
and (scadenza >= now()) ,si,no) staperscadere
Calcolare quanti gioni mancano alla scadenza
Supponiamo che il campo data_pagamento contiene la data di scadenza di una fattura. Per sapere quanti giorni mancano da oggi alla scadenza si può usare
(TO_DAYS(data_pagamento)-TO_DAYS(now())) giorni_mancanti










