Relativieren von Datumsstempeln in SQL



  • Hiho zusammen,

    ich habe hier mehrere Testreihen die ihre Daten in einer SQL-Datenbank ablegen.
    Jeder Test hat ca. 250 Einträge (=Zeilen) mit fortlaufendem Zeitstempel.
    Es gibt also Tests die an unterschiedlichen Tagen gemacht wurden.

    Um die Test direkt mitsammen vergleichen zu können möchte ich die Datumstempel alle auf eine gleiche Basis bringen.
    d.h. der erste Eintrag eines jeden Tests sollte der 1.Januar 2000 sein und alle darauffolgenden Einträge sollen sich daran orientieren.

    Hat jemand eine Idee wie sich das in SQL verwirklichen lässt ?

    Danke
    Gawan



  • Im Grunde ist es doch egal welches Datum dahinter steht. Nutze es nur zum Sortieren. Das reicht schon. Ein Feld mit timestamp ist immer der aktuelle Zeitstempel sonst würde es nicht timestamp sein.
    Es kommt aber auch auf dein RDBMS an. Da könntest DU mit Triggern was machen.



  • Nein, es ist eben nicht egal, da ich die verschiedenen Test in ein Datawarehouse packe und den Timestamp als Zeitlinie verwenden will.
    Wenn dann jeder Test zu einem anderen Zeitpunkt käuft kann ich die Kurven nicht übereinander legen 🙂



  • Wenn jeder Test zum gleichen Zeitpunkt laufen würde bräuchtest du den Timestamp nicht selbst anpassen da diese dann gleich wären.
    Wenn Dir die Zeit sowieso egal ist dann passt es auch weil due dann nur die Anzahl Datensätze nach timestamp sortiert nehmen musst.

    Wenn die Diff. zw. 2 Einträgen nicht egal ist dann ermittel die Diff dazu.
    Das kann ich nun alles so fortsetzen.
    Somit ist es egal welcher timestamp da drin ist.

    UNd ein Lösung so wie Du es willst habe ich dir mit einem Trigger geliefert.



  • Ausgangssituation:

    TestNr.    Timestamp            Testwert1           Testwert2   
       1     03-03-06 12:53:05       388,303             0,47756
       1     03-03-06 12:53:15       449,882             1,28745
       1     03-03-06 12:53:25       210,341             0,00567
       2     01-08-05 09:17:21       22,9345             0,53336
       2     01-08-05 09:17:31       21,4421             2,18844
       3     17-10-04 21:45:01       861,213             1,88634
    
    Ziel:
    
    TestNr.    Timestamp            Testwert1           Testwert2   
       1     01-01-80 00:00:00       388,303             0,47756
       1     01-01-80 00:00:10       449,882             1,28745
       1     01-01-80 00:00:20       210,341             0,00567
       2     01-01-80 00:00:00       22,9345             0,53336
       2     01-01-80 00:00:10       21,4421             2,18844
       3     01-01-80 00:00:00       861,213             1,88634
    

    So, das kann ich aber mit einem Trigger nicht machen, dazu brauch ich irgendeinen SQL-Befehl 😕



  • Weiß du was ein Trigger ist?
    Ist ein Event der Ausgelöst wird wenn Daten in die DB geschrieben werden. Du hast aber die Frage nach dem RDBMS nicht beantwortet und deshalb kann Dir keiner sagen ob das RDBMS überhaupt Trigger unterstützt.

    Deine Frage nach den vorliegenden Daten ohne den Timestamp zu ändern habe ich dir bereits beantwortet.

    SELECT * FROM tabelle where TestNr = 1 ORDER BY Timestamp

    Jetzt hast du alle Daten für test1.
    Jetzt zu den Datumswerten die diff in sekunden berechnen. Mehr hast du ja bei den anderen Datensätzen auch nicht.
    Ich werde dir hier keine vollständigen SQLQUERY geben ohne das du mal meine Lösungsvorschläge beachtest.

    Programmieren ist nicht einfach Code tippen sondern eine Lösung suchen und diese in COde verfassen.



  • Genau das "Jetzt zu den Datumswerten die diff in sekunden berechnen" suche ich und dafür wär konkreter Code schon toll 🙂



  • Kommt doch auf deine Programmiersprache an.
    Du hast eine Zeitwert als TEXT. Diesen dann in die Zeitklasse deiner Sprache.
    Danach eben die Funktionen deiner Sprache anwenden.
    Hat nichts mit DB zu tun.
    Man kann zwar mit einem SQL-Query die diff berechen lassen aber nicht für alle ROWS.



  • Ich habe schon im ersten Posting geschrieben:

    Hat jemand eine Idee wie sich das in SQL verwirklichen lässt ?


Anmelden zum Antworten