Php 日期\在Laravel上添加查询显示意外结果
我在mySQL上有这个查询Php 日期\在Laravel上添加查询显示意外结果,php,sql,laravel,Php,Sql,Laravel,我在mySQL上有这个查询 SELECT updated_at FROM products WHERE updated_at >= DATE_ADD(NOW(), INTERVAL -7 DAY) GROUP BY day(updated_at) ORDER BY updated_at desc 我试着把它用在拉威尔身上 $date = Products::select('updated_at') ->where('updated_at', '>='
SELECT updated_at
FROM products
WHERE updated_at >= DATE_ADD(NOW(), INTERVAL -7 DAY)
GROUP BY day(updated_at)
ORDER BY updated_at desc
我试着把它用在拉威尔身上
$date = Products::select('updated_at')
->where('updated_at', '>=', 'DATE_ADD(NOW(), INTERVAL -7 DAY)')
->groupBy('updated_at')
->orderBy('updated_at', 'desc')
->get()
Laravel上的结果显示所有数据都在更新栏中,而不仅仅是6天前。我在Laravel上的查询有什么问题吗,谢谢您必须使用
whereRaw
:
$date = Products::select('updated_at')
->whereRaw('updated_at >= DATE_ADD(NOW(), INTERVAL -7 DAY)')
->groupBy('updated_at')
->orderBy('updated_at', 'desc')
->get()
另一个用例是,当您需要向日期列实际添加一个间隔并将其与now()进行比较时,就像将start_date后的2天与now()进行比较一样。 您必须完全像这样做(laravel 5.7):
- 其中“开始日期”是列名
- 关键字“interval”和“day”必须为小写(或任何其他类似的所需关键字)
- 比较日期和括号
->whereRaw('start_date+interval 2 day>=?',[now()])代码>
我在这里找到了有效的答案:谢谢,我想选择更新日期,怎么做?我想你可以使用Products::select('updated_at',DB::raw('day(updated_at)as day'))
->whereRaw('start_date + interval 2 day >= ?', [now()]);