Php Mysql:按日期交叉点选择,而不是在
我有一个订购系统。在db中,我有一个表,其中包含订购系统的阻止日期(当客户出于某些原因(如假期)想要关闭它时)。 订购系统允许从实际日期起的四周内订购 作为PHP中的输入,Php Mysql:按日期交叉点选择,而不是在,php,mysql,date,Php,Mysql,Date,我有一个订购系统。在db中,我有一个表,其中包含订购系统的阻止日期(当客户出于某些原因(如假期)想要关闭它时)。 订购系统允许从实际日期起的四周内订购 作为PHP中的输入,$startDT和$endDT db中的每个块都有其valid\u from和valid\u to列 问题在于长期封锁(例如月),当有效的起始和终止时间超出创建订单的时间段时 对于短期和中期封锁,此代码非常有效: SELECT * FROM `vk_blocking` WHERE (`valid_from` BETWEEN
$startDT
和$endDT
db中的每个块都有其valid\u from
和valid\u to
列
问题在于长期封锁(例如月),当有效的起始和终止时间超出创建订单的时间段时
对于短期和中期封锁,此代码非常有效:
SELECT * FROM `vk_blocking` WHERE (`valid_from` BETWEEN '$startDt' AND '$endDt') OR (`valid_to` BETWEEN '$startDt' AND '$endDt')
但在显示的长期(ID:3)中,在$startDt
和$endDt
之间有onvalid\u from
或valid\u to
如何要求MySQL也长期返回?有类似的吗
SELECT * FROM `vk_blocking` WHERE DATERANGE(`valid_from`, `valid_to`) INTERSECTS DATERANGE($startDt, $endDt)
您想要的可以通过以下方式实现:
SELECT * FROM `vk_blocking` WHERE `valid_from`<= $endDt AND $startDt<= `valid_to`
SELECT*FROM`vk_blocking`WHERE`valid_FROM`True-尽管我更喜欢保持比较的一致性。哦,我很惭愧。。。我没能看到这么简单的方法。非常感谢,先生。