Php 需要Laravel中whereHour命令的等效项(不存在)

Php 需要Laravel中whereHour命令的等效项(不存在),php,mysql,laravel-5,eloquent,Php,Mysql,Laravel 5,Eloquent,我使用以下SQL查询返回一组数据(即将到来的会话): 这将返回我需要的数据(提前24小时将要进行的会话),但我很难将其转换为一种格式,以便在Laravel中返回相同的数据(使用5.3) 我有一个开始: $UpcomingSessions = Availability::where('name', '=', 'booked') ->where("start_time",">=", '(DATE_ADD(NOW(), INTERVAL 1 DAY))') ->whereDay("s

我使用以下SQL查询返回一组数据(即将到来的会话):

这将返回我需要的数据(提前24小时将要进行的会话),但我很难将其转换为一种格式,以便在Laravel中返回相同的数据(使用5.3)

我有一个开始:

$UpcomingSessions = Availability::where('name', '=', 'booked')
->where("start_time",">=", '(DATE_ADD(NOW(), INTERVAL 1 DAY))')
->whereDay("start_time",">=", '(DAY(DATE_ADD(NOW(), INTERVAL 1 DAY)))')
->where("start_time",">=", '(DATE_SUB(NOW(),INTERVAL 1 HOUR))')
->get();
但我不知道如何处理小时部分,因为没有

whereHour 
在拉雷维尔

如果我尝试:

->where("HOUR(start_time)",">=", '(HOUR(DATE_ADD(NOW(), INTERVAL 1 DAY)))')
我得到以下信息:

未找到列:“where子句”中的1054未知列“小时(开始时间)”


有没有一个我可以使用的等效命令?任何关于如何正确格式化SQL的想法都将非常好

嘿,如果你想用


嘿,如果你尝试使用

这里是拉威尔8.x

文档中有一个
whereTime()
函数

$users = DB::table('users')
            ->whereTime('created_at', '=', '11:20:45')
            ->get();
作为第二个参数给出的值可以是任何格式化的字符串。例如,您可以将其缩小到2
whereTime()
调用:

$users = DB::table('users')
            ->whereTime('created_at', '>=', '11:00:00')
            ->whereTime('created_at', '<', '12:00:00')
            ->get();
$users=DB::table('users'))
->whereTime('created_at','>=','11:00:00')
->whereTime('created_at','p>Laravel 8.x此处

文档中有一个
whereTime()
函数

$users = DB::table('users')
            ->whereTime('created_at', '=', '11:20:45')
            ->get();
作为第二个参数给出的值可以是任何格式化的字符串。因此,例如,您可以将其缩小到2
whereTime()
调用:

$users = DB::table('users')
            ->whereTime('created_at', '>=', '11:00:00')
            ->whereTime('created_at', '<', '12:00:00')
            ->get();
$users=DB::table('users'))
->whereTime('created_at','>=','11:00:00')

->whereTime('created_at','Thank,whereRaw正在做这项工作。Thank,whereRaw正在做这项工作。在尝试和测试之后,发现时间字符串必须有两位数的小时数,否则在检查一个小时(如1)时,它将得到所有的1个前导小时,以此类推为2。因此,如果插入一个变量(如
“$hour:00:00”
,使用
sprint()
函数会更好更安全。例如
->whereTime('created_at','>=',sprintf(“%02d:00:00,$hour))
->whereTime('created_at','在尝试和测试之后,发现时间字符串必须有2位数字表示小时,否则在检查1等小时时,它将获得所有1个前导小时,以此类推表示2。因此,如果插入一个变量,如
“$hour:00:00”
,使用
sprint()会更好、更安全
函数。例如
->whereTime('created_at','>=',sprintf(%02d:00:00,$hour))
->whereTime('created_at','
$users = DB::table('users')
            ->whereTime('created_at', '>=', '11:00:00')
            ->whereTime('created_at', '<', '12:00:00')
            ->get();