製品のテーブルと、start_date 用と end_date 用の 2 つの DATETIME 列があります。
特定の製品 ID が開始日と終了日の間にあるかどうかを確認するにはどうすればよいですか? ただし、これらのいずれかまたは両方が NULL (デフォルト値) の場合、この下限/上限を無制限として受け入れ、他の境界内にある場合 (設定されている場合) は製品を返します。両方の境界が NULL に設定されている場合、常に積が返されます。
製品のテーブルと、start_date 用と end_date 用の 2 つの DATETIME 列があります。
特定の製品 ID が開始日と終了日の間にあるかどうかを確認するにはどうすればよいですか? ただし、これらのいずれかまたは両方が NULL (デフォルト値) の場合、この下限/上限を無制限として受け入れ、他の境界内にある場合 (設定されている場合) は製品を返します。両方の境界が NULL に設定されている場合、常に積が返されます。
select *
from your_table
where
product_id = 1 AND
(
(CURDATE() between start_date and end_date)
or (CURDATE() >= start_date and end_date is null)
or (CURDATE() <= end_date and start_date is null)
or (start_date is null and end_date is null)
)
select case when ('2012-06-26' between start_date and end_date)
or ('2012-06-26' >= start_date and end_date is null)
or ('2012-06-26' <= end_date and start_date is null)
then 1
else 0
end as is_between_dates
from your_table
where product_id = 1