Allora....

DATE() non e' un comando ma un formato di campo che rende yyyy-mm-dd se ti rende 2008-09-17 17:09:47 allora e' un campo DATETIME o TIMESTAMP (ansi)

la query la puoi fare in questo modo:

codice:
select if(NOW() - interval 1 day >= campo_data, 'si', 'no') as permesso
from tabella
where ....
in pratica se sono passate 24 ore ricevi un 'si' altrimenti un 'no'

perche' 24 ore e non un giorno... perche' ti porti dietro ore:min:sec mentre si presume che si calcola a giorni si intenda dalle ore 00:00:00 alle 23:59:59