26

我正在使用 Laravel 框架。

我想要这一天的所有行。这是我尝试过的:

DB::table('users')->where('created_at', '>=', date('Y-m-d H:i:s'))

created_at在数据库中以格式表示的字段:) Y-m-d H:i:s

4

6 回答 6

49

嗯……这个问题有一个很好的答案,现在似乎已经消失了。*

是这样的:

User::where('created_at', '>=', new DateTime('today'))

注意:如果您将此代码放在具有命名空间的文件中,或者将来可能使用命名空间,则应在 DateTime 类前面加上反斜杠:new \DateTime('today')

* https://stackoverflow.com/questions/15052679/laravel-framework-how-to-get-today-queries

于 2013-02-24T16:02:40.263 回答
4

date('Y-m-d H:i:s')返回现在的日期。

如果您想要一天开始的结果,可以将其替换为date('Y-m-d').' 00:00:00'.

如果您想要过去 24 小时的结果,可以将其替换为date('Y-m-d H:i:s',time()-86400)(86400 = 24*60*60)

于 2013-02-24T15:36:38.450 回答
3

对于那些只需要比较日期而不需要时间的人,Lavarel 提供了一个方便的函数whereDate

User::whereDate('created_at', '>=', date('Y-m-d'));

http://laraveldaily.com/eloquent-date-filtering-wheredate-and-other-methods/

于 2016-07-12T03:16:00.343 回答
0

简单地:

DB::table('users')->where('created_at', '>=', date('Y-m-d'). ' 00:00:00')

获取这一天的所有行时(时间应为 00:00:00),因此请确保将日期条件设置为当前日期加上 00:00:00 即

date('Y-m-d'). ' 00:00:00'
于 2018-02-04T14:44:45.087 回答
0

利用whereDate

$users = DB::table('users')
                ->whereDate('created_at', '2016-12-31')
                ->get();

您可能使用的其他功能是: whereDate / whereMonth / whereDay / whereYear / whereTime

于 2018-04-11T07:26:06.813 回答
0

我知道这个话题很老,但可能有人试图从搜索引擎中找到解决方案。

您可以使用:

User::whereDate('created_at', '=', Carbon::today()->toDateString());

如果您想了解更多关于 Laravel 中使用 where 进行日期比较的信息,可以访问此链接。

Eloquent 日期过滤:whereDate() 等方法

于 2016-12-12T11:55:58.400 回答