Ho questa Query che calcola i giorni piu' vicini, passati o futuri per un compleanno.
Codice PHP:
$Query1 = "SELECT DATE_FORMAT(data_nascita,'%d-%m-%Y') AS nato,
DATEDIFF(CURDATE(), DATE_FORMAT(data_nascita + INTERVAL YEAR(CURDATE()) - YEAR(data_nascita) YEAR,'%Y-%m-%d')) as diff
FROM sql_agenda
WHERE DATEDIFF(CURDATE(), DATE_FORMAT(data_nascita + INTERVAL YEAR(CURDATE()) - YEAR(data_nascita) YEAR,'%Y-%m-%d')) BETWEEN -30 AND 30
ORDER BY diff DESC
";
Da un controllo visivo sembra funzionare però ci sono un paio di dubbi.
L'istruzione che mi incuriosisce è questa
Codice PHP:
DATE_FORMAT(data_nascita + INTERVAL YEAR(CURDATE()) - YEAR(data_nascita) YEAR,'%Y-%m-%d')
Perchè nella WHERE non posso usare l'alias definito nella SELECT?
Che cosa fa l'ultimo YEAR presente nella istruzione della SELECT e della WHERE?
Se tento di toglierlo la Query mi va in errore.
Visto che questa istruzione non mi è chiara, sarei grato a chi me la spiegherebbe.
Grazie per l'attenzione.