Anda perlu membedakan dua kasus.
-
Kapan
first < last, tanggalnya di tahun yang sama. Anda kemudian dapat menggunakanbetweenuntuk mencocokkan tanggal. -
Kapan
first > last, artinyalastada di tahun depan. Dalam hal ini, tanggal yang cocok adalahdate >= first OR date <= last.
Jadi klausa WHERE Anda seharusnya:
WHERE IF(first < last, @date BETWEEN first AND last,
@date >= first OR date <= last)