首页 > 解决方案 > Mysql:查询无法正常工作,未选择 12:00 之间的位置

问题描述

mysqlbetween没有按预期工作。我现在的查询:

Table::where(function ($query) use ($time_in, $time_out) {
            $query->orWhereRaw("? between time_in AND time_out", [$time_in.":00"])
            ->orWhereRaw("? between time_in AND time_out", [$time_out.":00"])
            ->orWhereRaw("time_in between ? AND ?", [$time_in.":00", $time_out.":00"])
            ->orWhereRaw("time_out between ? AND ?", [$time_in.":00", $time_out.":00"]); 
        })->get();

我正在尝试从Table我的time_in&time_out是否在它们之间或它们是否在我的time_in和之间获取所有数据time_out。在这里不起作用的是:如果$time_in = 12:00然后$time_out = 3:00我的查询不会选择具有time_into11:00的数据time_out = 4。但是,如果我将其更改$time_in为,1:00则查询将起作用。如果我有11:00or的数据12:00并且如果我检查我的11:00or12:00是否在它们之间,它就不起作用

标签: phpmysqllaravel

解决方案


我假设您对 $time_in 和 $time_out 使用 12 小时制,因为到 12:00 您似乎意味着午夜。

不满足 BETWEEN 条件是因为“12:00”大于“03:00”,在这种情况下 MySQL 将永远不会返回任何数据。

当表示 12:00am 时,您需要先将“12”翻译成“00”。

或者你应该找到另一种方法让 MySQL 知道你的意思是 12:00am 而不是 12:00pm。

此外,您如何区分例如凌晨 4 点和下午 4 点?

我很高兴我总是使用 24 小时制,上午 12:00 只是 00:00。


推荐阅读