我有一个订购系统。在数据库中,我的表有一个用于订购系统的日期被屏蔽的表(当客户出于假期等原因而要关闭该表时)。 订购系统允许从实际日期开始的下四个星期内订购。
作为输入,我在PHP $startDT
和$endDT
中
db中的每个阻塞都有其valid_from
和valid_to
列
当valid_from和valid_to超出了创建顺序的时间范围时,问题就存在长期封锁(例如,月份)。
对于短期和中期封锁,此代码可以很好地工作:
SELECT * FROM `vk_blocking` WHERE (`valid_from` BETWEEN '$startDt' AND '$endDt') OR (`valid_to` BETWEEN '$startDt' AND '$endDt')
但是在所示的长期(ID:3)中,valid_from
和valid_to
之间在$startDt
或$endDt
上
如何要求MySQL也长期返回?是否有类似的东西
SELECT * FROM `vk_blocking` WHERE DATERANGE(`valid_from`, `valid_to`) INTERSECTS DATERANGE($startDt, $endDt)
答案 0 :(得分:1)
您想要的可以通过以下方式实现:
SELECT * FROM `vk_blocking` WHERE `valid_from`<= $endDt AND $startDt<= `valid_to`
这可以确保两个范围至少有一天相同的时间。