Fehlende Tage per SQL suchen



  • Hallo Leute,
    ich habe eine InterBase-DB mit der Tabelle "Werte". Diese Tabelle besteht aus den Feldern "Datum als DateTime" und "Wert als Integer". In dieser Tabelle wird täglich ein Wert abgelegt. Nun meine Frage:
    Wie kann man per SQL abfragen, ob auch wirklich jeden Tag Werte abgespeichert wurden (wenn man mal einen Tag vergessen hat). Als Datenmenge hätte ich dann ganz gern die fehlenden Tage.

    Gruß torsten_156



  • Hallo,

    ich glaube nicht, dass das so einfach geht. Aber vielleicht kannst du dir etwas zusammenbasteln.

    Beim SQL Server gibt es einige Zeitfunktionen:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_fa-fz_2c1f.asp

    Musst schauen, vielleicht gibt es sie auch bei Interbase.

    MfG

    EDIT: Folgender Link könnte noch interessant sein:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/acdata/ac_8_qd_11_4hb9.asp



  • du kannst auch mit Triggern arbeiten, indem du jedes Datum einfügst was fehlt sobald du Daten einträgst, am Ende brauchst du nur die Daten abfragen, die den vordefinierten Wert in "Wert" stehen haben

    z.B.

    CREATE TRIGGER ADD_DATE FOR WERTE
    ACTIVE After INSERT POSITION 0
    AS
      declare variable datum1 date;
    BEGIN
      datum1 = null;
      select datum from werte where datum = new.datum-1 into :datum1;
      if (:datum1 is not null) then
        insert into werte (wert, datum) values (-1000, new.datum-1);
    END ^
    

    -1000 steht in dem Beispiel für einen Wert, der in den Daten nie auftreten wird und dadurch kann man leicht erkennen welche Datumswerte mit dem Trigger eingetragen wurden:

    select * from werte where wert = -1000
    

    sollte mal mehr als ein Datum fehlen, mußt du den Trigger nur entsprechend anpassen

    hier noch ein nützlicher link zu Interbase


Anmelden zum Antworten