Dunque..
innanzitutto un chiarimento sintattico di base:
una espressione come 2004-07-31 scritta come vedo nelle tue righe non è corretta perché deve intanto essere inclusa tra virgolette "2004-07-31" (o apici), in quanto è un'espressione stringa. Se scrivi:
nomefunzione(2004-07-31);
senza virgolette non fai altro che dare come parametro alla funzione il risultato di due sottrazioni tra i numeri che hai indicato, cioè 2004 meno 7 meno 31.
Se vuoi la prova basta che in una pagina fai:
<? echo(2004-07-31); ?>
e vedrai come risultato 1996.
E mi sembra logico, no?
Dunque le espressioni di quel tipo di data vanno indicate come stringhe.
Tornando alla questione della data, do per scontato che stai utilizzando il formato anno-mese-giorno perché è il formato DATE di MySQL, no?
Bene, dunque se fai la tua query al database avrai diciamo il risultato del record corrente in un array, diciamo $row, il tipico:
Codice PHP:
$row = mysql_fetch_array($result) or die();
Ora se vuoi per esempio scrivere sulla pagina come risultato la data di un campo "data" del record, sai che se scrivi solo:
echo $row['data'];
ti vedi sulla pagina un brutto: 2004-07-31
Dunque suppongo che ora vuoi mostrare una data più "presentabile" e vuoi sapere come farlo bene, ok ti consiglio questo metodo:
Codice PHP:
$ladata = date('j/m/Y', strtotime($row['data']));
echo "Ecco la data: $ladata";
Che la mostra nella forma più comune qui in italia giorno/mese/anno, ma puoi scegliere tra migliaia di combinazioni tramite la funzione date e i codici data del primo parametro.
Tutto questo casino spiegato qui sopra poteva semplicemente essere sostituito con una semplice soluzione:
metti le virgolette a quell'espressione data, cioè:
echo strtotime("2003-08-04");
e tutto funziona.. ma sarebbe stato troppo semplice e poco educativo :grin: