whereBetween 不使用 Carbon::parse()->subDay() & 当前日期 laravel

Posted

技术标签:

【中文标题】whereBetween 不使用 Carbon::parse()->subDay() & 当前日期 laravel【英文标题】:whereBetween not working with Carbon::parse()->subDay() & current day laravel 【发布时间】:2020-12-11 23:05:24 【问题描述】:

我想查询两个日期之间的时间

这是运行良好的代码

whereBetween('created_at', [now()->subDay()->format('Y-m-d') . ' ' . $tgame->start_time->format('H:i:s'), now()->format('Y-m-d') . ' ' . $tgame->end_time->format('H:i:s')]

但此代码不起作用

$date = Carbon::parse($request->date);
whereBetween('created_at', [$date->subDay()->format('Y-m-d') . ' ' . $tgame->start_time->format('H:i:s'), $date->format('Y-m-d') . ' ' . $tgame->end_time->format('H:i:s')]

请解释一下谢谢

【问题讨论】:

$request->datenow() 可能不同。 【参考方案1】:

$date 对象上调用subDay() 会将Carbon 对象中的时间设置回24 小时。所以在whereBetween 的上边界,您使用的不是请求日期,而是 24 小时前的那个。

要实现你想要的,你需要在改变之前复制对象:

...->whereBetween('created_at', [$date->copy()->subDay()->format('Y-m-d') . ' ' . $tgame->start_time->format('H:i:s'), $date->format('Y-m-d') . ' ' . $tgame->end_time->format('H:i:s')]

【讨论】:

以上是关于whereBetween 不使用 Carbon::parse()->subDay() & 当前日期 laravel的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 中某个字段出现次数最多的查询

Laravel whereBetween 带可选参数

碳和雄辩的时代

如何获得两个时间值之间的间隔

在 Laravel 中不与 whereBetween 合作的地方

Laravel:模型属性和 whereBetween