大家好,
我正在雄辩地进行whereBetween
日期查询,但是日期时间有问题。
如果我选择date_from to 2018-11-01
和date_to to 2018-11-29
,如果我有一个在2018-11-29 12:28:45
上创建的数据,则由于时间原因,将不包括在该日期时间创建的数据。有没有一种方法可以将created_at
强制转换为date
。
这是我的代码:
Payable::with('details', 'transaction_type')
->whereBetween('created_at', [$request->date_from, $request->date_to])
->get();
提前谢谢。
答案 0 :(得分:1)
您可以将时间设置为日期变量。
$request->date_from = $request->date_from . ' 00:00:00';
$request->date_from = $request->date_from . ' 23:59:59';
答案 1 :(得分:0)
我觉得在Laravel中处理日期的一种更简洁的方法是使用Carbon包。
$date_from = Carbon::createFromFormat('Y-m-d', $request->date_from)->startOfDay();
$date_to = Carbon::createFromFormat('Y-m-d', $request->date_to)->endOfDay();
仅FYI,created_at
列在通过雄辩者访问时,默认情况下会返回碳日期对象。
希望这会有所帮助。
K
答案 2 :(得分:0)
如果您不介意在查询中添加额外的->
,则可以很容易地做到这一点:
Payable::with('details', 'transaction_type')
->whereDate('created_at', '>=', $request->date_from)
->whereDate('created_at', '<=', $request->date_to)
->get();