Du måste skilja mellan två fall.
-
När
first < last, datumen är samma år. Du kan sedan användabetweenför att matcha datum. -
När
first > last, det betyderlastär under nästa år. I det här fallet är datumen som matchardate >= first OR date <= last.
Så din WHERE-sats bör vara:
WHERE IF(first < last, @date BETWEEN first AND last,
@date >= first OR date <= last)