【问题标题】:Laravel query for a range of timeLaravel 查询时间范围
【发布时间】:2017-12-02 19:55:39
【问题描述】:

我正在寻找一种方法来比较时间,早上 - 6 到 9,白天 - 9 到 12,晚上 12 - 5

现在,我在 html 中使用 select 选项

<select name="time" id="time">
          <option disabled value="">Choose A Time</option>
          <option value="06:00 - 09:00">Morning - 06:00 - 09:00 </option>
          <option value="10:00 - 13:00">Day - 10:00 - 13:00 </option>
          <option value="14:00 - 18:00">Evening - 14:00 - 18:00</option>
        </select>

我试图像这样查询它,datetime我从数据库中得到它,就像2017-12-13 06:15:00

    $query->whereTime('datetime', '>=', $request->get('time').':00')                    
    });

我不知道如何比较时间范围,例如比较 06:00-09:0006:15

【问题讨论】:

  • datetime 列的数据类型是什么?
  • 这是datetime 数据类型

标签: php mysql sql laravel


【解决方案1】:

您可以使用与上述相同的查询来查找两次之间的表行。

$query->whereTime('timestamp', '>=', \Carbon\Carbon::parse('06:00'))
     ->whereTime('timestamp', '<=', \Carbon\Carbon::parse('06:30'))

不要像这样连接日期字符串,

$request->get('time').':00')  

这不太合适,你可能会用这种方法失败。

【讨论】:

  • 好的,但是我喜欢06:00-09:00,我该如何使用碳解析,一个用于06:00,一个用于09:00
  • $morning_time_array = explode('-','06:00-09:00'); $morning_time_array[0] 将是 '06:00' 你也应该使用 whereBetween 像: ->whereBetween('time', ['06:00', '09:00'])->get();
猜你喜欢
  • 2021-08-17
  • 2015-06-06
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
相关资源
最近更新 更多