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)