In realtà la funzione date() accetta un timestamp, cioè il numero di secondi trascorsi dalla unix epoch (01/01/1970), non un testo. Ergo:

PS. c'entra qualcosa se nel db il campo della data è un TEXT invece che DATETIME? Che differenza c'è?
sì, è parecchio influente. Nemmeno DATETIME funziona (che ritorna 'YYYYMMDD', non il timestamp), dovresti usare proprio il tipo TIMESTAMP, che è esattamente il formato richiesto da date().