Announcement

Collapse
No announcement yet.

Timestamp eingrenzen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Timestamp eingrenzen

    Moin Jungs, ich hab da mal ein Problem. Um es mir und auch euch ein wenig zu vereinfachen schildere ich mal eben den Aufbau meiner Tabellen mit denen ich später weiterarbeiten möchte. Es ist nicht großartig kompliziert, ich habe nämlich lediglich 2 Spalten. In der einen steht ein Wert, in der anderen der dazugehörige Zeitstempel. Das Problem ist nun folgendes:

    Ich möchte gerne eine Differenz zweier Werte bilden, die sich immer genau auf den Vortag beziehen. Das heißt, ich würde optimal gerne den Wert vom beispielsweise dem 06.07.2009 24:00:00 nehmen, und von diesem den Wert vom 05.07.2009 24:00:00 abziehen. Nur leider gibt es nicht immer diese Zeitstempel Einträge in meiner Datenbank, da die Werte ziemlich unregelmäßig geliefert werden. Falls es diese Werte nun nicht gibt, soll dementsprechend der jeweils nächste Wert genommen werden, der sich allerdings noch in diesem Zeitrahmen von 24 h bewegt. Es sollte ja eine Differenzberechnung bezogen auf den Vortag werden. (Jüngere Wert) - (älterer Wert)
    Es könnte also sein, dass ich den Wert vom 05.07.2009 23:54:23 nehmen muss und von diesem den Wert vom 05.07.2009 00:00:12 abziehen muss.
    Entscheidend ist, dass nur Werte zur Differenzbildung genommen werden dürfen,die sich in den 24 Stunden des Vortages befinden.
    Ich hoffe ihr und ich haben es jetzt verstanden... Hoffentlich könnt ihr mir weiterhelfen!Ich danke euch schonmal im Vorraus

    Matze

  • #2
    Hallo Matze,

    vielleicht reicht Dir dieses Beispiel:
    [highlight=SQL]CREATE TABLE #Dummy
    (Typ int, Wert int, datum datetime);
    GO
    INSERT INTO #Dummy VALUES (1, 1, '20090707 23:55:00')
    INSERT INTO #Dummy VALUES (1, 2, '20090706 23:52:00')
    INSERT INTO #Dummy VALUES (1, 3, '20090705 23:57:00')
    INSERT INTO #Dummy VALUES (1, 4, '20090705 13:57:00')
    INSERT INTO #Dummy VALUES (1, 5, '20090705 12:57:00')
    INSERT INTO #Dummy VALUES (1, 6, '20090704 23:58:00')
    INSERT INTO #Dummy VALUES (1, 7, '20090705 23:00:00')

    SELECT *, D1.Wert - D2.Wert AS Differenz
    FROM #Dummy AS D1
    INNER JOIN #Dummy AS D2
    ON D1.Typ = D2.Typ
    WHERE D1.datum = '20090705 23:57:00'
    AND D2.datum =
    (SELECT TOP 1 Sub.datum
    FROM #Dummy as SUB
    WHERE Sub.Typ = D1.Typ
    AND SUB.datum < D1.datum
    AND SUB.datum >= DATEADD(hh, -24, D1.datum)
    ORDER BY DATEDIFF(hh, Sub.datum, D1.datum) DESC)

    GO
    DROP TABLE #Dummy[/highlight]
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment

    Working...
    X