如何找到起始时间和结束时间范围(如果在该范围内),然后检查起始日期和结束时间

时间:2019-02-01 18:33:32

标签: php mysql codeigniter-3

我在数据库中有一个下表。

    id | list_id |venue_id |name | start_date | end_date   |start_time | end_time 
    1  |       1 |  1      |asdf |  2019-02-02| 2019-02-28 |05:30      |10:00
    2  |       7 |  2      |awed |  2019-02-10| 2019-02-20 |07:30      |14:00
    3  |       7 |  1      |mjgd |  2019-02-04| 2019-02-13 |09:30      |18:00

现在,我必须在venue_id=12019-02-04的范围之间找到2019-03-01的开始日期和结束日期。所以我在下面查询。

SELECT * FROM `batch_list` WHERE `venue_id` = 1 and ((start_date between '2019-02-04' and '2019-03-01') OR (end_date between '2019-02-04' and '2019-03-01'))

现在,我必须找到place_id = 1的日期和时间,该日期和时间的范围是2019-02-042019-03-01以及05:0018:00。所以我在下面的查询中尝试了

SELECT * FROM `batch_list` WHERE `venue_id` = 1 and ((start_date between '2019-02-04' and '2019-03-01') OR (end_date between '2019-02-04' and '2019-03-01')) and((start_time <= `end_time`) and (`start_time` between '05:00' and '18:00')and (end_time between '05:00' and '18:00'))

所以到目前为止没有问题。

我的时间是05:0020:00,那么我将获得与placed_id 1相关的所有记录,但是如果我将时间10:00更改为{{1} },那么我没有得到记录。

我需要找出在该范围内是否有任何start_time和end_time可用。如果找到,则检查开始日期和结束日期。

在这个问题上您能帮我吗?

型号

13:00

1 个答案:

答案 0 :(得分:1)

正如某些人建议的那样,最好将日期和时间结合到数据库中。

对于您的问题,我认为您想要的查询就是这个:

SELECT * FROM batch_list 
WHERE    venue_id = 1
         AND (start_date <= '2019-03-01') 
         AND (start_time <= '13:00:00')
         AND (end_date >= '2019-02-04')
         AND (end_time >= '10:00:00')