Mysql 使用查询生成器仅从日期时间提取时间

Mysql 使用查询生成器仅从日期时间提取时间,mysql,laravel,laravel-5,laravel-query-builder,Mysql,Laravel,Laravel 5,Laravel Query Builder,如何使用laravel查询生成器从该交易中提取或仅使用时间。交易日期:“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())->i

如何使用laravel查询生成器从该
交易中提取或仅使用时间。交易日期
“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);
    });

}
公共函数启动()
{
Schema::defaultStringLength(191);
view()->composer('layouts.member',函数($view){
$user=可选(Auth::user())->id;
$value=DB::表('exchanges')
->leftJoin('trades','exchanges.id','=','trades.exchange_id'))
->其中('trades.user_id',$user)
->whereRaw(“?不在开始时间和结束时间之间,'trades.tradedate')

或者->where('trade_date','>=','exchanges.close_time')->where('trade_date','p>您可以使用Carbon进行解析并从日期获取时间

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

公共函数getTime()
{
return\Carbon\Carbon::parse($this->my_date)->toTimeString();
}
或者,您可以为您的模型添加访问器(getter fro属性):

公共函数getMyDateAttribute($date)
{
return\Carbon\Carbon::parse($date)->toTimeString();
}

我不确定,但您可以尝试以下方法:

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);
    });

}

请将您迄今为止尝试过的代码与大家分享,以获得更好的答案。您也可以通过这种方式尝试-date('H:i:s')我已经为你分享了我的代码@ShreerajI think i can can pass carbon..让我在这里发布我的查询我已经发布了我的相关函数,
trades.tradedate
需要提取时间。这是个好主意,但它给我的结果只是
trade\u date
。@Ahsani认为你可以使用时间(trades.tradedate)覆盖它作为tradedate…但不知何故,我并不认为这是一个好的做法,或者你指的是它只是给你这个列,是的,默认情况下它会选择*,但是如果你指定一个选择,你必须指定每一列,或者使用->selectRaw('*'),你得到的结果是
trade\u date