我有一个表存储我运行的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脚本中,该脚本计算每个日期的查看次数,但如果数据库可以对我进行分组和计数,那么对我来说更有意义。
如何将其剥离,以便按日分组并忽略时间?
答案 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