Uw code probeert een bindvariabele te gebruiken om zowel een SQL-sleutelwoord als een getal te vervangen. Dat kan je niet™.
Toen ik dit probleem heb opgelost, heb ik mijn tijdsintervallen vertaald naar seconden en vervolgens gebruikt
CURDATE() - INTERVAL :seconds SECONDS
Trouwens, CURDATE() geeft je vandaag middernacht. Misschien wilt u in plaats daarvan NOW() als u intervallen van een dag gebruikt.