5

我有一个记录请求的数据库表,其中包含一个 IP 列和一个 DateTime 戳。我试图以一种让我计算某个 IP 发出请求的天数的方式获取这些数据。我正在使用 Laravel 的查询生成器。

到目前为止,这就是我所拥有的:

$data = DB::table('requests')
                    ->groupBy('ip')
                    ->select('ip', 
                             DB::raw('COUNT(DISTINCT created_at) as days'), 
                             DB::raw('COUNT(*) as requests'))
                    ->orderBy('days', 'desc')
                    ->take(50)
                    ->get();

我的问题是时间戳还包含小时、分钟和秒。因此,“天”数将与总请求数大致相同。我只想计算活跃的天数。

4

2 回答 2

12

如果字段created_atTIMESTAMP

COUNT(DISTINCT FROM_UNIXTIME(created_at, '%Y-%m-%d')) as days

或者如果字段是DATETIME

COUNT(DISTINCT DATE(created_at)) as days
于 2013-09-30T09:10:57.623 回答
1

您可能可以使用 DATE_FORMAT 来做您想做的事。看看这个问题: Selecting a distinct date by day only from datetime (YYYY-MM-DD HH:MM:SS) in MySQL

于 2013-09-30T09:08:43.037 回答