2017-06-16 3 views
0

Ich möchte eine Tabelle abfragen, um herauszufinden, wie viele Objekte in Postgres nach Datum, Tag und Monat erstellt wurden.Postgres Zählung nach Datum mit Zeitzone

zählen Fetch für letzten 30 Tagen

SELECT d.date, count(se.id) 
FROM (SELECT to_char(date_trunc('day', (current_date - offs)), 'YYYY-MM-DD') AS date 
FROM generate_series(0, 30) AS offs) d LEFT OUTER JOIN 
    someTable se 
    ON d.date = to_char(date_trunc('day', se.created_at), 'YYYY-MM-DD') 
GROUP BY d.date; 

Fetch von Tag zählen

select to_char(created_at,'day') as Day, 
     extract(month from created_at) as Date, 
     count("id") as "Count" 
from someTable 
group by 1,2 

Monat zählen Fetch

select to_char(created_at,'Mon') as mon, 
     extract(year from created_at) as yyyy, 
     count("id") as "Count" 
from someTable 
group by 1,2 

Das funktioniert gut für mich. Das Problem, das ich habe, ist, möchte ich die Daten basierend auf verschiedenen Zeitzonen abgerufen werden. Ich habe die Zeit in UTC gespeichert. Ich könnte diese Abfragen mit verschiedenen Zeitzonen ausführen.

Was ist der beste Weg, es zu tun?

Antwort

1

Aktivieren Sie diese answer, um die Datetime in Postgres mit unterschiedlicher Zeitzone zu erhalten.

zählen Fetch für letzten 30 Tagen

SELECT d.date, count(se.id) 
FROM (SELECT to_char(date_trunc('day', (current_date - offs)), 'YYYY-MM-DD') AS date 
FROM generate_series(0, 30) AS offs) d LEFT OUTER JOIN 
    someTable se 
    ON d.date = to_char(date_trunc('day', se.created_at::timestamp with time zone at time zone 'EST'), 'YYYY-MM-DD') 
GROUP BY d.date; 

Fetch von Tag zählen

select to_char(created_at::timestamp with time zone at time zone 'EST','day') as Day, 
     extract(month from created_at) as Date, 
     count("id") as "Count" 
from someTable 
group by 1,2 

Monat zählen Fetch

select to_char(created_at::timestamp with time zone at time zone 'EST','Mon') as mon, 
     extract(year from created_at) as yyyy, 
     count("id") as "Count" 
from someTable 
group by 1,2 

auf diese Postgres documentation Siehe auch über Zeitzone mit Datumzeit zu lernen.