php - Mysql:按日期交集选择,而不是之间

标签 php mysql date

我有一个订购系统。在数据库中,我有一个表,其中包含订购系统的阻止日期(当客户因假期等原因想要将其关闭时)。 订购系统允许在实际日期后四个星期的时间段内订购。

作为 PHP $startDT$endDT 中的输入 数据库中的每个阻塞都有其 valid_fromvalid_to

问题在于长期阻塞(例如月份),当 valid_from 和 valid_to 超出创建订单的时间段时。

enter image description here

对于短期和中期阻塞,此代码可以很好地工作:

SELECT * FROM `vk_blocking` WHERE (`valid_from` BETWEEN '$startDt' AND '$endDt') OR (`valid_to` BETWEEN '$startDt' AND '$endDt')

但在显示的长期 (ID:3) 中,$startDt$ 之间有 valid_fromvalid_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/

相关文章:

php - 使用 PDO 对数组进行分页上限

php - 在 Phpmyadmin 中更改日期类型

mysql - 如果 postid 是新的,则插入 mysql,否则更新

mysql - MYSQL 中使用 BETWEEN 的日期

php - 如何从 MySQL 表中的纬度/经度获取最近的地点?

php - PDOException 与 DROP TABLE IF EXISTS

java - 验证请求 - 数据库和 Java 如何存储和处理时区?

sql - 如何获取格式为 MM/DD/YYYY 的最新日期顺序

php - 从函数中查询

mysql - (MySQL : Wildcard in FROM clause?