我有一个订购系统。在数据库中,我有一个表,其中包含订购系统的阻止日期(当客户因假期等原因想要将其关闭时)。 订购系统允许在实际日期后四个星期的时间段内订购。
作为 PHP $startDT
和 $endDT
中的输入
数据库中的每个阻塞都有其 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) 中,$startDt
和 $ 之间有
valid_from
或 valid_to
endDt
如何要求 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`
这可确保两个范围至少有一天相同。
关于php - Mysql:按日期交集选择,而不是之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56413578/