Hallo PGSQL Gemeinde,
Kurze Istzustandsbeschreibung:
Ich arbeite an einem Projekt, bei welchem ich eine kleine Java Applikation schreibe die als Informationslogger dient. Die Informationen werden mit einem Zeitstempel in der Datenbanktabelle gespeichert. Diese läuft ständig im Hintergrund. Eine andere kleine Applikation wird nur bei Bedarf aufgerufen, liest die Infos aus der Datenbank heraus und soll die Daten der letzten 30 Minuten darstellen. Ich bin ein Anfänger in Java und in PostgreSQL, habe die letzten Wochen viel gelernt und gearbeitet, mir geht nun aber langsam die Zeit aus um mir alles selber anzulesen, deshalb muss ich nun doch jemanden zu Rate ziehen der weiß was er tut.
Das ganze Projekt steht im Prinzip schon, die Datenbankverbindung, einlesen, auslesen, anzeigen klappt alles. Nur bei den 30 Minuten komme ich noch nicht klar. Bis jetzt war meine Idee, den Zeitstempel in Millisekunden in der Datenbank abzuspeichern. Damit lässt sich in Java gut arbeiten und in der Datenbank kann ich recht einfach auf "Zeitstempel > < = Irgendwas" abfragen. Das ganze ist rein theoretisch möglich, aber es scheitert an der enorm großen Zahl des "timeInMillis". Mit kleineren Zahlen habe ich es getestet, da würde es funktionieren.
Beispiel:
Query query = manager.createQuery("SELECT a FROM Logfile a WHERE a.timestamp > "+ (GetTimeInMillis - THIRTY_MINS));
Meine Frage, woher kommt diese Grenze? Kann ich dieses Problem umgehen?
Als Alternative habe ich mir überlegt mit Date-Objekten aus Java zu arbeiten. Aber dann müsste ich jede Zeile aus der Datenbank auslesen, umwandeln, vergleichen ob Datum/Zeit passt und dann entscheiden ob ich das ganze anzeige oder nicht. Kommt mir etwas unpraktisch/uneffizient vor!?
Dann habe ich mirüberlegt dass es bestimmt Befehle gibt, welche ich als Query an die Datenbank übergeben kann, wo dann die ganze Berechnung, ob der Eintrag älter als 30 Minuten ist, in der Datenbank statt findet und ich nicht jede Zeile einzeln überprüfen muss. Aber genau da scheitere ich Mangels Erfahrung, Zeit und für mich verständlicher Dokumentation und bitte euch deshalb um Hilfe.
Wie kann ich das am schlausten machen? Oder gibt es noch eine viel einfachere Lösung die ich vor lauter in eine Richtung rennenübersehen habe?
Dank und Grüße,
SQLDud
