从具有特殊条件的数据库中获取日期

get dates from database where with special conditions

我为你打造了这个 fiddle: https://dbfiddle.uk/?rdbms=mariadb_10.5&fiddle=35f21ff5601276b4dba0e9250594d101

有一个查询,应该获取一天的所有时间段,条件如下:

这很好用! 但是现在我有一个新问题!

fiddle 向我展示了结果:

2021-07-07 14:00:00

不过我也想有

2021-07-07 16:00:00

因为在此插槽之前是一个服务 = 0

你能帮帮我吗??

如果你的意思是“立即在此插槽之前是服务= 0”,那么尝试:

SELECT * FROM `timeslots` ts
WHERE (
        NOT EXISTS (
            SELECT NULL FROM `timeslots` ts2
            WHERE DATE(ts2.`timeslot`) = DATE(ts.`timeslot`)
            AND TIME(ts2.`timeslot`) <= TIME(ts.`timeslot`)
            AND `service` != 2
        )
    OR
        EXISTS (
            SELECT NULL FROM `timeslots` ts2
            WHERE DATE(ts2.`timeslot`) = DATE(ts.`timeslot`)
            AND DATE_SUB(ts.`timeslot`, INTERVAL 1 HOUR) = ts2.`timeslot`
            AND ts2.`service` = 0
        )    
    )
AND `timeslot` > DATE_ADD(CURDATE(), INTERVAL 1 DAY)
ORDER BY `timeslot`

See db-fiddle