Su código intenta usar una variable de vinculación para reemplazar una palabra clave de SQL, así como un número. No puedes hacer eso™.
Cuando resolví este problema, traduje mis intervalos de tiempo a segundos y luego usé
CURDATE() - INTERVAL :seconds SECONDS
Por cierto, CURDATE() te da la medianoche de hoy. Es posible que desee NOW() en su lugar si está manejando intervalos de subdías.