Originariamente inviato da spoon25
il risultato che ti ti da (2038- ...) è giustissimo penso ...
La funzione date() vuole il parametro data sotto forma di UNIX timestamp (numero di secondi trascorsi dal 1970), mentre in MySQL anche se il campo di chiama TIMESTAMP salva in un altro formato '0000-00-00 00:00:00', dunque tu quando fai il select e vai a leggere il valore salvato se lo vuoi passare a date(); devi trasformarlo in UNIX timestamp.
è quello che pensavo anche io, ma il prototipo della funzione dice che non vuole neanche un tipo timestamp bensì un intero...
codice:
string date ( string formato [, int timestamp] )
comunque sia per trasformare il tipo timestamp di mysql nel tipo timestamp di unix (quello vero) dovrebbe esserci una funzione di mysql apposta.
manuale dixit:
codice:
Per generare un timestamp da una stringa rappresentante la
data, devi sapere usare strtotime(). In aggiunta, dei
databases hanno funzioni che convertono i loro formati di
data in timestamps (come la funzione di MySQL,
UNIX_TIMESTAMP).
potresti quindi provare così:
$sql="SELECT UNIX_TIMESTAMP(data) as data FROM tabella WHERE ...";
...
echo date("Y-m-d", $row[data]);
se non riesci in questo modo (o con il casting che ti ho proposto prima) ti consiglio anche io di usare direttamente il tipo "data" in mysql.