我有以下数据库架构(其中日值 0=mon,1=tue,2=wed
等等)
和下面的输入
{
"day": 3,
"start_time": "15:00",
"end_time": "17:30"
},
{
"day": 5
"start_time": "08:00",
"end_time": "12:00"
}
我想查找输入值是否包含数据库中的任何重叠记录。 (请注意,在我的例子中,给定的一天可以有多个开始时间和结束时间)
这是我尝试过的。
SELECT
COUNT(id) AS total_count
FROM
working_hour
WHERE (
(day = 3 AND (start_time <= '15:00' AND end_time >= '17:30')) ||
(day = 5 AND (start_time <= '08:00' AND end_time >= '12:00'))
) AND user_id = 1;
这返回我的总计数 0
而我期待 1
因为在 day = 3
我们有一个匹配的重叠记录,id 5
我哪里出错了?
谢谢。
最佳答案
我相信你想要的逻辑是:
SELECT COUNT(*) AS total_count
FROM working_hour
WHERE user_id = 1 AND
((day = 3 AND start_time <= '17:30' AND end_time >= '15:00') OR
(day = 5 AND start_time <= '12:00' AND end_time >= '8:00')
) ;
关于mysql - SQL - 检查是否存在重叠的工作时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55555712/