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.

Prova con qualcosa come SELECT UNIX_TIMESTAMP(`data`) AS `data` FROM tua_tabella; otterrai un UNIX timestamp direttamente senza doverti metter a calcolarlo