Du skal skelne mellem to tilfælde.
-
Når
first < last, datoerne er i samme år. Du kan derefter brugebetweenat matche datoer. -
Når
first > last, det betyderlaster i det næste år. I dette tilfælde er de datoer, der matcher,date >= first OR date <= last.
Så din WHERE-sætning skal være:
WHERE IF(first < last, @date BETWEEN first AND last,
@date >= first OR date <= last)