我一直在(单一列)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
的东西?
请帮助
答案 0 :(得分:2)
您仅在whereDate()
中具有Laravel的专用功能。您可以像这样使用它:
$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
答案 1 :(得分:0)
要在两个日期之间进行检查,您应该使用此代码:
$fromDate =Carbon::parse($request->start_date);
$toDate = Carbon::parse($request->end_date);
Model::whereBetween('created_at', [$fromDate->toDateString(), $toDate->toDateString()])->get();
答案 2 :(得分:0)
哇。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
->where('created_at', '>=', $fromDate->toDateString())->where('created_at', '<=', $toDate->toDateString())
非常感谢您,我的愚蠢。