我使用以下 SQL 查询返回一组数据(即将到来的 session ):
SELECT * FROM availabilities
WHERE
name = "Booked"
and
start_time >= (DATE_ADD(NOW(), INTERVAL 1 DAY))
and
DAY(start_time) >= (DAY(DATE_ADD(NOW(), INTERVAL 1 DAY)))
and
HOUR(start_time) = (HOUR(DATE_ADD(NOW(), INTERVAL 1 DAY)));
这会返回我需要的数据(提前 24 小时即将举行的 session ),但我正在努力将其转换为可以在 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
在 Laravel 中。
如果我尝试:
->where("HOUR(start_time)",">=", '(HOUR(DATE_ADD(NOW(), INTERVAL 1 DAY)))')
我收到以下消息:
未找到列:1054 “where 子句”中存在未知列“HOUR(start_time)”
是否有一个等效的 whereHour 命令可供我使用?任何有关如何正确格式化 SQL 的想法都很棒!
最佳答案
这里是 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();
关于php - Laravel 中需要等效(不存在)whereHour 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57650317/