按时间分组时间戳,而不是按时间分组

时间:2013-02-08 10:48:18

标签: sql postgresql

我有一个表存储我运行的Web服务的用户访问/查看日志。它将时间跟踪为时间戳,虽然我发现当我汇总报告时我只关心当天,而不是时间。

我目前正在运行以下查询:

SELECT user_logs.timestamp
    FROM user_logs
        WHERE user_logs.timestamp >= %(timestamp_1)s
            AND user_logs.timestamp <= %(timestamp_2)s
                ORDER BY user_logs.timestamp

通常还有其他条件,但它们对问题无关紧要。我正在使用Postgres,但我认为所使用的任何功能都适用于其他语言。

我将结果放入一个Python脚本中,该脚本计算每个日期的查看次数,但如果数据库可以对我进行分组和计数,那么对我来说更有意义。

如何将其剥离,以便按日分组并忽略时间?

1 个答案:

答案 0 :(得分:61)

SELECT date_trunc('day', user_logs.timestamp) "day", count(*) views
FROM user_logs
WHERE user_logs.timestamp >= %(timestamp_1)s
    AND user_logs.timestamp <= %(timestamp_2)s
group by 1
ORDER BY 1