我想获取开始时间和结束时间之间的平均时间,以及我在laravel中编写sql的CUR-Time GroupBY用户名的位置,它显示了一些错误,我找不到什么那是因为我是该laravel的新手,请帮助修复此SQL错误,然后提交我的SQL和错误消息。
$avagTime = DB::table( 'active_user' )
->select(DB::raw('AVG(TIME_TO_SEC(acu_et) - TIME_TO_SEC(acu_at))'))
->where (DATE('acu_at') == ('CURDATE()'))
->get();[![enter image description here][1]][1]
答案 0 :(得分:0)
尝试此代码:
$currentTime = Carbon::now()->toDateTimeString();
$avagTime = DB::table( 'active_user' )
->select(DB::raw('AVG(TIME_TO_SEC(acu_et) - TIME_TO_SEC(acu_at))'))
->where ('acu_at', $currentTime)
->get();
我认为这将是有益的。谢谢
答案 1 :(得分:0)
把逻辑从那里拿出来不是更好吗?我更喜欢仅从数据库中获取日期时间,然后使用Carbon将其转换为Unix timestamp
。然后使用它们,因为它们是简单的int。
答案 2 :(得分:0)
问题出在您的where
子句中。 Laravel的查询生成器有一个whereDate()方法,很适合此操作:
$avagTime = DB::table('active_user')
->selectRaw('AVG(TIME_TO_SEC(acu_et) - TIME_TO_SEC(acu_at))')
->whereDate('acu_at', today())
->get();
注意事项:如果要像示例中那样将where原因作为原始查询传递,则需要使用whereRaw()或where()
之类的内容。< / p>