使用查询生成器仅从dateTime中提取时间

时间:2018-08-19 07:41:48

标签: mysql laravel laravel-5 laravel-query-builder

如何使用laravel查询构建器从trades.tradedate"2018-08-14 06:48:24"中提取或仅使用时间。

输出应为: 06:48:24 我的功能:

public function boot()
{
    Schema::defaultStringLength(191);



    view()->composer('layouts.member', function ($view) {

        $user = optional(Auth::user())->id;
        $value = DB::table('exchanges')
            ->leftJoin('trades', 'exchanges.id', '=', 'trades.exchange_id')
            ->where('trades.user_id', $user)
            ->whereRaw("? NOT BETWEEN start_time AND close_time", 'trades.tradedate')

  OR   ->where('trade_date','>=', 'exchanges.close_time')->where('trade_date', '<=', 'exchanges.start_time')

            ->get();
        $view->with('value', $value);
    });

}

2 个答案:

答案 0 :(得分:2)

我不确定,但是您可以尝试执行以下操作:

public function boot()
{
    Schema::defaultStringLength(191);



    view()->composer('layouts.member', function ($view) {

        $user = optional(Auth::user())->id;
        $value = DB::table('exchanges')
            ->leftJoin('trades', 'exchanges.id', '=', 'trades.exchange_id')
            ->where('trades.user_id', $user)
            ->select(DB::raw('TIME(trades.tradedate) AS trade_date'))
            ->whereRaw("? NOT BETWEEN start_time AND close_time", 'trade_date')

            ->get();
        $view->with('value', $value);
    });

}

答案 1 :(得分:1)

您可以使用Carbon进行解析并从日期获取时间。

要从模型中获取时间,可以向模型添加方法:

public function getTime ()
{
    return \Carbon\Carbon::parse($this->my_date)->toTimeString();
}

或者您可以为模型添加访问器(属性的getter):

public function getMyDateAttribute($date)
{
    return \Carbon\Carbon::parse($date)->toTimeString();
}

More about accessorsCarbon documentation.