我有一个订购系统。在 db 中,我有一个表,其中包含用于订购系统的锁定日期(当客户出于某种原因(例如假期)想要将其关闭时)。订购系统允许从实际日期开始的接下来四个星期的时间段内订购。
由于输入我在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)
您可以通过以下方式实现:
SELECT * FROM `vk_blocking` WHERE `valid_from`<= $endDt AND $startDt<= `valid_to`
这可确保两个范围至少有一天的共同点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句