Je třeba rozlišovat dva případy.
-
Když
first < last
, data jsou ve stejném roce. Poté můžete použítbetween
aby odpovídaly datům. -
Kdy
first > last
, znamená tolast
je 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)