Mysql 想要在Laravel中获得时间范围之间的结果吗

Mysql 想要在Laravel中获得时间范围之间的结果吗,mysql,laravel,join,Mysql,Laravel,Join,我有一些记录,我想从这些记录中获取项目不在给定时间范围内的记录,这是我的代码,我已经尝试过了,但没有成功 $other_hour_trade = DB::table('finaltrade') ->join('exchanges', 'finaltrade.exchange_id', '=', 'exchanges.id') ->select('finaltrade.*') ->where('finaltrade.user_id'

我有一些记录,我想从这些记录中获取项目不在给定时间范围内的记录,这是我的代码,我已经尝试过了,但没有成功

$other_hour_trade = DB::table('finaltrade')
        ->join('exchanges', 'finaltrade.exchange_id', '=', 'exchanges.id')
        ->select('finaltrade.*')
        ->where('finaltrade.user_id', $user_id)
        ->whereNotBetween('finaltrade.created_at', [DB::raw('exchanges.start_time'), DB::raw("ADDTIME(exchanges.start_time, '01:00:00')")])
        ->whereNotBetween('finaltrade.created_at', [DB::raw('exchanges.close_time'), DB::raw("SUBTIME(exchanges.close_time, '01:00:00')")])
        ->get();
“finaltrade.created_at”是一个日期时间字段,并且 “exchanges.start_time”和“exchanges.close_time”是唯一的时间字段


我已经连接了两个表以获得结果

我不知道如何直接使用
whereNotBetween
,但是既然您已经尝试在当前代码中使用一些原始SQL,为什么不直接使用
whereRaw

$other_hour_trade = DB::table('finaltrade')
    ->join('exchanges', 'finaltrade.exchange_id', '=', 'exchanges.id')
    ->select('finaltrade.*')
    ->where('finaltrade.user_id', $user_id)
    ->whereRaw("finaltrade.created_at NOT BETWEEN exchanges.start_time AND ADDTIME(exchanges.start_time, '01:00:00')")
    ->whereRaw("finaltrade.created_at NOT BETWEEN exchanges.close_time AND SUBTIME(exchanges.close_time, '01:00:00')")
    ->get();

@科林巴斯托如果我告诉你我不知道雄辩,你会相信我吗?我只是试图修复OP的Laravel代码。@Colin Barstow对此一无所知,我想是因为'finaltrade.created__at'是一个日期时间字段,而'exchanges.start_time'和'exchanges.close_time'是唯一的时间字段,我们只需要从finaltrade中筛选时间。created_atI很抱歉,我想在OP上发布这个,这根本不是为你准备的。你用的是什么Laravel版本?Laravel 5.3版本