Du skal skelne mellem to tilfælde.
-
Når
first < last
, datoerne er i samme år. Du kan derefter brugebetween
at matche datoer. -
Når
first > last
, det betyderlast
er 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)