我一直在努力处理(单列)created_at列之间的日期范围,到目前为止我试过这个
$startDate = date('Y-m-d', strtotime($request->start_date));
$endDate = date('Y-m-d', strtotime($request->end_date));
....->whereBetween('created_at', [$startDate,$endDate])
created_at格式默认为(Y-m-d H:i:s),在帖子数据中我得到这种格式(Y-m-d)
我知道这是错误的查询,但我该怎么想?
我要使用->whereRaw()
吗?或者->whereDate
的东西?
请帮忙
你有一个专门的功能在Laravel为此目的只有whereDate()
。您可以像这样使用它:
$startDate = date('Y-m-d', strtotime($request->start_date));
$endDate = date('Y-m-d', strtotime($request->end_date));
....->whereDate('created_at', '>', $startDate)->whereDate('created_at', '<', $endDate)
此外,您可以使用<=
和>=
来包含限制。
并且不要担心“created_at格式是默认的(Ymd H:i:s),在帖子数据中我得到这种格式(Ymd)”,因为该函数只比较日期部分而不是时间戳部分所以你很好去。
参考here
检查两个日期之间你应该使用这个:
$fromDate =Carbon::parse($request->start_date);
$toDate = Carbon::parse($request->end_date);
Model::whereBetween('created_at', [$fromDate->toDateString(), $toDate->toDateString()])->get();
哇....非常愚蠢的我没有尝试一切我问的问题,它听起来很简单: -
->where('created_at', '>=', $fromDate->toDateString())->where('created_at', '<=', $toDate->toDateString())
非常感谢你,非常抱歉我的愚蠢。