2つのケースを区別する必要があります。
-
first < lastの場合 、日付は同じ年です。その後、betweenを使用できます 日付を一致させる。 -
first > lastのとき 、それはlastを意味します 来年です。この場合、一致する日付はdate >= first OR date <= lastです。 。
したがって、WHERE句は次のようになります。
WHERE IF(first < last, @date BETWEEN first AND last,
@date >= first OR date <= last)