如何获取laravel tabel中提供的created_at列(默认列格式:Y-m-d H:i:s)之间的日期范围?

问题描述 投票:0回答:3

我一直在努力处理(单列)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的东西?

请帮忙

database laravel laravel-5 eloquent laravel-5.7
3个回答
2
投票

你有一个专门的功能在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


0
投票

检查两个日期之间你应该使用这个:

$fromDate =Carbon::parse($request->start_date); 
$toDate = Carbon::parse($request->end_date);  

Model::whereBetween('created_at', [$fromDate->toDateString(), $toDate->toDateString()])->get();

0
投票

哇....非常愚蠢的我没有尝试一切我问的问题,它听起来很简单: -

->where('created_at', '>=', $fromDate->toDateString())->where('created_at', '<=', $toDate->toDateString())

非常感谢你,非常抱歉我的愚蠢。

© www.soinside.com 2019 - 2024. All rights reserved.