Ihr Code versucht, eine Bindungsvariable zu verwenden, um ein SQL-Schlüsselwort sowie eine Zahl zu ersetzen. Das geht nicht™.
Als ich dieses Problem gelöst habe, habe ich meine Zeitintervalle in Sekunden übersetzt und dann
verwendet CURDATE() - INTERVAL :seconds SECONDS
Übrigens, CURDATE() gibt Ihnen heute Mitternacht. Sie können stattdessen NOW() verwenden, wenn Sie Intervalle unter einem Tag verarbeiten.