使用Laravel在PHP中按时间戳,后端过滤SQL数据库查询

时间:2016-07-12 15:16:04

标签: php sql-server database laravel timestamp

所以我正在尝试从我的后端构建一个查询到我的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

提前致谢!

2 个答案:

答案 0 :(得分:1)

基本上就这么简单。

->whereDate('created_at', '<=', \Carbon\Carbon::now()->subDays(30));

答案 1 :(得分:1)

您可以使用DB::raw

来利用mysql的日期函数
->where('created_at', '<=', DB::raw("DATE_SUB(CURDATE(),INTERVAL 30 DAY)")