Guten Tag alle zusammen erst mal hier!
Ich sitze gerade vor einem Problem und komm leider von alleine nicht auf die Lösung! Vielleicht kann mir jemand von euch weiter helfen!
Ich habe eine Tabelle mit einer Spalte Datum und einem Wert dazu. Über einen Cronjob sollte hier jeden Tag ein Wert und das zugehörige Datum gespeichert werden. Leider schlägt der Cronjob ab und zu fehl, was dazu führt, dass ich von diesem Tag leider keine Werte habe. Ich hab das Script mittlerweile so angepasst, dass bei einem fehlgeschlagenen Job ein Mail ausgeschickt wird.
Es geht aber jetzt um Einträge aus den vergangenen zwei Jahren, und ich will das nicht manuell überprüfen.
Kann ich über ein SQL Statement herausfinden, an welchen Tagen kein Eintrag in der Tabelle geschrieben wurde?
Danke schon mal und LG
Ankündigung
Einklappen
Keine Ankündigung bisher.
SQL Abfrage fehlende Tage in Tabelle
Einklappen
Neue Werbung 2019
Einklappen
X
-
SQL Abfrage fehlende Tage in Tabelle
Stichworte: -
-
Zitat von dipo01 Beitrag anzeigenbesten dank akretschmer, funktioniert genau so, wie ich mir das vorstelle!
-
besten dank akretschmer, funktioniert genau so, wie ich mir das vorstelle!
Einen Kommentar schreiben:
-
Zitat von dipo01 Beitrag anzeigenEs geht aber jetzt um Einträge aus den vergangenen zwei Jahren, und ich will das nicht manuell überprüfen.
Kann ich über ein SQL Statement herausfinden, an welchen Tagen kein Eintrag in der Tabelle geschrieben wurde?
Danke schon mal und LG
Code:test=*# select * from messung ; datum | val ------------+----- 2014-10-25 | 12 2014-10-26 | 15 2014-10-28 | 10 2014-10-29 | 8 2014-10-30 | 18 2014-11-01 | 28 2014-11-02 | 20 2014-11-03 | 12 (8 rows)
Code:test=*# select * from (select ('2014-10-22'::date + s * '1day'::interval)::date as datum from generate_series(0, (select current_date - '2014-10-22'::date))s) foo left join (select datum from messung) as haben on foo.datum=haben.datum where haben.datum is null; datum | datum ------------+------- 2014-10-22 | 2014-10-23 | 2014-10-24 | 2014-10-27 | 2014-10-31 | 2014-11-04 | (6 rows) -- oder sauberer: test=*# select foo.datum from (select ('2014-10-22'::date + s * '1day'::interval)::date as datum from generate_series(0, (select current_date - '2014-10-22'::date))s) foo leftjoin (select datum from messung) as haben on foo.datum=haben.datum where haben.datum is null; datum ------------ 2014-10-22 2014-10-23 2014-10-24 2014-10-27 2014-10-31 2014-11-04 (6 rows)
Einen Kommentar schreiben:
-
Könntest es mit "SELECT ... * FROM {alle_daten} NOT IN(SELECT datum FROM tabelle)" versuchen. {alle_daten} könntest du durch nen Subquery ersetzen, z.B. http://stackoverflow.com/questions/2...rom-date-range (Hab das nicht überprüft, aber der Output sieht so aus wie das was du haben möchtest.
Einen Kommentar schreiben:
Einen Kommentar schreiben: