sql - 按天而不是时间对时间戳进行分组

标签 sql postgresql

我有一个表,用于存储我运行的网络服务的用户访问/查看日志。它将时间作为时间戳进行跟踪,尽管我发现在进行汇总报告时我只关心日期,而不关心时间。

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

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 脚本中,该脚本计算每个日期的观看次数,但如果数据库可以对我进行分组和计数,这对我来说会更有意义。

我如何剥离它以便它按天分组并忽略时间?

最佳答案

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

关于sql - 按天而不是时间对时间戳进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14770829/

相关文章:

sql - 在 PostgreSQL 中使用 POSIX 正则表达式比使用 LIKE 和 ILIKE 有什么优势?

来自 postgresql 数据库的 Python 格式日期字符串

SQL - 状态机 - 根据变更集报告历史数据

sql - 有没有一种方法可以让我在 where 条件下拥有像 if-else 这样的功能

mysql - 如何解决这个 MySQL 查询?

sql - 简单的 WHERE 子句,但保留提取的行并填充它们将为空值

Android SQLite 不自动递增

mysql - 内连接与普通表的外左连接

sql - Postgres : Group by two columns - group by includes all unique combinations with 0 for null counts

java - ORA-01861 : literal doesn't match format string