所以我正在尝试从我的后端构建一个查询到我的SQL数据库(用Laravel编写的php)。我的数据库中有一个表,其标题为“created_at”,带有'timestamp'类型的值。我想要做的是,当我向我的数据库发送查询时,只选择从当前日期30天或更短时间创建的表格的行(或我猜)。我尝试过使用'where'关键字来回实验,但我无法按照我想要的方式来实现它。
当我浏览数据库中的表时,日期以“YYYY-MM-DD hh:mm:ss”的格式写出,但我不知道如何以这种格式比较它们,以及我不知道在进行查询时如何转换它们。我已经查看了Laravel中的whereBetween()方法,但由于我不知道如何比较它们,所以我没有这样做。
目前我的查询如下:
$topUser = DB::table('statistics')
->join('users', 'statistics.user_id', '=', 'users.id', 'inner')
->select('fname', 'user_id', DB::raw('sum(price) as total_collection'))
->groupBy('user_id')
->orderBy('total_collection','desc')
->get();
在伪代码中,我想要做的事情是:
->where 'created_at' <= 30 days ago
提前致谢!
答案 0 :(得分:1)
基本上就这么简单。
->whereDate('created_at', '<=', \Carbon\Carbon::now()->subDays(30));
答案 1 :(得分:1)
您可以使用DB::raw
->where('created_at', '<=', DB::raw("DATE_SUB(CURDATE(),INTERVAL 30 DAY)")