今月の日別ユーザー登録数を取得しようとしていますが、created_at フィールドにはタイムスタンプが含まれているため、グループ化で問題が発生しています。日付だけでグループ化する方法をご存知の方はいらっしゃいますか?
select count(*), created_at
from users
where created_at > '2018-07-01'
and admin = false
group by created_at
order by created_at desc
今月の日別ユーザー登録数を取得しようとしていますが、created_at フィールドにはタイムスタンプが含まれているため、グループ化で問題が発生しています。日付だけでグループ化する方法をご存知の方はいらっしゃいますか?
select count(*), created_at
from users
where created_at > '2018-07-01'
and admin = false
group by created_at
order by created_at desc
You want to round the datetime to the day. See
https://www.postgresql.org/docs/8.4/static/functions-datetime.html
I am on my phone, so can’t (or won’t) do a full solution, but this should get you close
SELECT EXTRACT(DOY FROM created_at) as day
I think date_trunc could work
examples (note the right padded zeroes and oh-ones)
Examples:
SELECT date_trunc(‘hour’, TIMESTAMP ‘2001-02-16 20:38:40’); Result: 2001-02-16 20:00:00
SELECT date_trunc(‘year’, TIMESTAMP ‘2001-02-16 20:38:40’); Result: 2001-01-01 00:00:00
@John_Waltrip1, here’s the query I think you’re looking for. I switched to DAY, which is the day of the month, which seems easier for most humans that I know to understand than the day of the year (DOY).
select count(*),
EXTRACT(DAY FROM created_at) as day
from users
where created_at > LOCALTIMESTAMP - INTERVAL '14 days'
and admin = false
group by day
order by day desc