我有一个表格用于存储我运行的网络服务的用户访问/查看日志。它将时间作为时间戳进行跟踪,但我发现当进行聚合报告时,我只关心日期,而不是时间。
我当前正在运行以下查询:
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
通常会有其他的where条件,但它们对这个问题不重要。我正在使用Postgres,但我认为无论使用什么功能,它都可以在其他语言中工作。
我将结果拉入Python脚本,计算每天的观看次数,但如果数据库可以为我分组和计算,则更有意义。
如何简化它,使其按日分组并忽略时间?
user_logs.timestamp::date
代替date_trunc('day', user_logs.timestamp)
。该快捷方式功能与前者相同,可以将user_logs.timestamp
字段转换为日期,但更为简洁。 - Ihor Romanchenko::date
会丢失时区信息,而date_trunc
则不会。这在您想要比较两年中的同一天并且该天从一个时区更改到另一个时区时可能很重要。 - Clodoaldo Neto