【问题标题】:extract only time from dateTime using query builder使用查询生成器仅从 dateTime 中提取时间
【发布时间】:2019-01-25 16:27:37
【问题描述】:

如何使用 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);
    });

}

【问题讨论】:

  • 请分享您迄今为止尝试过的代码以获得更好的答案。您也可以尝试这种方式 - date('H:i:s')
  • 我已经为你分享了我的代码@Shreeraj

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


【解决方案1】:

我不确定,但你可以试试这样:

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

}

【讨论】:

  • 这是个好主意,但是它给我的结果只是trade_date。 @Ahsan
  • 我认为你可以通过使用 TIME(trades.tradedate) AS tradedate 来覆盖它......但不知何故我不认为这是一个好习惯
  • 或者您可能指的是它只为您提供此列,是的,默认情况下它会选择 *,但如果您指定一个选择,则必须指定每一列,或者使用 ->selectRaw('*')
  • trade_date 得到的结果是什么?
【解决方案2】:

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

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

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

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

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

More about accessors, Carbon documentation.

【讨论】:

  • 我想我不能通过碳.. 让我在这里发布我的查询
  • 我已经发布了我的函数,trades.tradedate 需要提取时间。
猜你喜欢
  • 2017-08-15
  • 2015-06-12
  • 2016-01-03
  • 2014-12-31
  • 2012-03-18
  • 2015-06-02
  • 2019-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多