Forum: SQL |
Thema:
Komplizierte Zeitrechnung / Logging |
Von:
Marco Behnke (
15.05.2006 15:16) |
Ich habe ine Tabelle für Benutzer, die den Status und einen Zeitstempel speichert
realuser (integer) {userid}
state (integer) {0 = ausgelogged, 1 = eingelogged}
date (timestamp without time zone) {Zeitstempel des Eintrags}
Nun möchte ich mit einer SQL Abfrage die zusammenaddierte eingeloggte Zeit haben. Also die Zeiträume zwischem einen State 1 und State 0 Wechsel.
Mein bisheriger Ansatz liefert leider Rückgaben im Jahresbereich auf einen Tag addiert, wo ich also vermute, dass er mehr also nur eines addiert.
Problem verstanden? Ich hoffe ich konnte es klar formulieren. Als Datenbank benutze ich Postgres.
Das ist mein bisheriger Ansatz, date_trunc reduziert den Zeitstempel auf den kompletten Tag, so dass ich gruppieren kann:
SELECT l1.realuser, date_trunc('day', l1.date) as date2,
sum(l2.date - l1.date) AS sumtime
FROM
realuserlog l1, realuserlog l2
WHERE
l2.date > l1.date AND l1.state = 1 AND l2.state = 0
GROUP BY
l1.realuser, date2
ORDER BY
date2 ASC;
Betreff |
Von |
Datum |
|
|
Marco
Behnke
|
15.05.2006 15:17 |
|
|
G.
Guest
|
15.05.2006 15:39 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!