Laravel ORM,日期比较

时间:2013-02-24 15:10:48

标签: php laravel orm

我正在使用Laravel Framework。

我想要今天的所有行。这就是我试过的:

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

(数据库中的字段created_at格式为:Y-m-d H:i:s)。

6 个答案:

答案 0 :(得分:47)

嗯......对于这个似乎已经消失的问题有一个很好的答案。*

这是这样的:

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

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

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

答案 1 :(得分: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)

答案 2 :(得分:3)

对于那些只需要比较没有时间的日期的人,Lavarel提供了一个方便的功能 whereDate

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

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

答案 3 :(得分:0)

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

您可以使用:

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

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

Eloquent date filtering: whereDate() and other methods

答案 4 :(得分: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'

答案 5 :(得分:0)

使用whereDate

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

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