例如,我只需要提取两天内的所有记录 今天是24/7,所以我需要23/7和22/7中的所有记录
我尝试
->whereRaw('DATE(created_at) = DATE_SUB(CURDATE(), INTERVAL 2 DAY)')
但无法正常工作,它将获取两天前的记录 也可以尝试
->whereDate( 'created_at', '>', Carbon::now()->subDays( 2 ) )
但是它包含了我今天也不需要的记录。
我该如何使用carbon
或DATE
答案 0 :(得分:3)
您应该这样做:
->whereDate('created_at', '>', Carbon::today()->subDays( 2 ))
->whereDate('created_at', '!=', Carbon::today());
今天将不包括在内。
如果您希望更多原始查询,则可以执行以下操作:
->whereBetween(\DB::raw("DATE(`created_at`)"), [ Carbon::today()->subDays(2), Carbon::today()->subDays(1) ]);
注意:今天使用它是因为它使代码看起来更具表现力,但是now
也可以使用。
答案 1 :(得分:2)
执行以下操作:
->whereDate( 'created_at', '>=', Carbon::today()->subDays( 2 ) )
->whereDate( 'created_at', '<', Carbon::today() )
答案 2 :(得分:1)
添加此内容,可能对您有用
->whereDate( 'created_at', '>', Carbon::today()->subDays( 2 ) )
->whereDate( 'created_at', '!=', Carbon::today())
答案 3 :(得分:0)
尝试 -> whereDate('created_at','<',Carbon :: now()-> addDays(2))
答案 4 :(得分:0)
您可以使用whereBetween
https://laravel.com/docs/5.6/queries#where-clauses
->whereBetween('created_at', [now()->subDays(2)->startOfDay(), now()->endOfDay()])
-
您还可以使用多个where
子句:
->where('created_at', '>', now()->subDays(2)->startOfDay())
->where('created_at', '<', now()->endOfDay())
-
您也可以使用whereDate
->whereDate('created_at', '>', now()->subDays(2)->startOfDay())
->whereDate('created_at', '<', now()->endOfDay())
-