Startzeitpunkt mithilfe von Interval

Hi,

ich schreibe gerade an einem Trigger, der nach dem Einfügen eines Tupels in eine Tabelle ausgeführt werden soll. In dem Tupel gibt es einen Timestamp. Nun lese ich in dem Trigger aus einer anderen Tabelle einen Interval-Wert. Da könnte z.B. sowas wie “1 day” oder “01:00:00” stehen. Nun möchte ich mit dem Zeitwert des einzufügenden Tupels und dem Interval den Startzeitpunkt des Intervals bestimmen, d.h. wenn z.B. der Timestamp ‘2007-02-06 13:30:00’ lautet und als Interval ‘01:00:00’ ausgelesen wurde, so möchte ich einen Startzeitpunkt von ‘2007-02-06 13:00:00’ erhalten. Wenn das Interval ‘1 day’ sein würde, wäre der Startzeitpunkt ‘2007-02-06 00:00:00’. Kann mir jemand sagen wie ich das realisiere?

gruß chuqa

Allgemein gesehen sieht das nach der Fuktion date_trunc aus,

Allerdings: einmal willst Du angefangene Stunden abschneiden und einmal den Tag. Vielleicht kannst Du das dann mit CASE fallweise lösen:

case when = ‘01:00:00’::interval then …


Aber willst Du wirklich exakte Daten durch ungenaue ersetzen? Vielleicht brauchst Du diese ‘Rundung’ nur in der Ausgabe bei bestimmten Auswertungen zur Grupppierung oder so. Vielleicht wäre es sinnvoller, dies im select zu machen und in der DB den genauen Wert gespeichert zu lassen.


Andreas

Es werden ankommende Variablenwerte in einer Tabelle gespeichert, ungeordent usw, halt einfach ein Log. Nun soll der User sich Tabellen anlegen können in der nur die gewünschten Variablen mit ihren Werten gespeichert werden. Außerdem kann eine Regel angegeben werden, wie sie gespeichert werden und eben ein Intervall. Die Regeln können z.b. der Maximalwert, die Summe, der Mittelwert, usw. sein. Das Intervall kann z.b. auch 15min oder so etwas betragen. Wie detailiert sich das der User wählen können soll, darauf habe ich kein Einfluss, aber ein Intervall von 6min 27s mach sicherlich wenig Sinn. Ich müsste nun eben nur den Startzeitpunkt rausbekommen um dann die Werte ihrem entsprechendem Platz zuzuordnen.

gruß chuqa