Grouping timestamps by day, not by time

SqlPostgresql

Sql Problem Overview


I've got a table storing user access/view logs for the webservice I run. It tracks the time as a timestamp though I'm finding when I do aggregate reporting I only care about the day, not the time.

I'm currently running the following query:

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

There are often other where conditions but they shouldn't matter to the question. I'm using Postgres but I'd assume whatever feature is used will work in other languages.

I pull the results into a Python script which counts the number of views per date but it'd make much more sense to me if the database could group and count for me.

How do I strip it down so it'll group by the day and ignore the time?

Sql Solutions


Solution 1 - Sql

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionTeifionView Question on Stackoverflow
Solution 1 - SqlClodoaldo NetoView Answer on Stackoverflow