Je třeba rozlišovat dva případy.
-
Když
first < last, data jsou ve stejném roce. Poté můžete použítbetweenaby odpovídaly datům. -
Kdy
first > last, znamená tolastje v příštím roce. V tomto případě se shodují datadate >= first OR date <= last.
Vaše klauzule WHERE by tedy měla být:
WHERE IF(first < last, @date BETWEEN first AND last,
@date >= first OR date <= last)