Anda perlu membedakan dua kasus.
-
Kapan
first < last
, tanggalnya di tahun yang sama. Anda kemudian dapat menggunakanbetween
untuk mencocokkan tanggal. -
Kapan
first > last
, artinyalast
ada 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)