Announcement

Collapse
No announcement yet.

Datensätz die älter als 1 Jahr sind löschen

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

  • Datensätz die älter als 1 Jahr sind löschen

    hallo,

    hab eine tabelle mit rechnungen und jede rechnung hat ein bestimmtes datum! wie würde das statement lauten, wenn ich alle datensätze löschen will, deren datum älter als 1 jahr ist?

    danke & lg

  • #2
    Hallo Leuchtdiode,

    Du kannst Du DATEADD Funktion, um auf ein Datum einen Wert drauf /runter zu rechnen.
    Beispiel mit -1 Jahr:
    [highlight=SQL]SELECT *
    FROM Tabelle
    WHERE Datum >= DATEADD(yy, -1, GetDate())[/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


    • #3
      Originally posted by O. Helper View Post
      Hallo Leuchtdiode,

      Du kannst Du DATEADD Funktion, um auf ein Datum einen Wert drauf /runter zu rechnen.
      Beispiel mit -1 Jahr:
      [highlight=SQL]SELECT *
      FROM Tabelle
      WHERE Datum >= DATEADD(yy, -1, GetDate())[/highlight]
      perfekt

      danke & lg

      Comment


      • #4
        bräuchte bitte nochmal kurz eure hilfe...

        und zwar will ich alle mitarbeiter haben, die keine rechnung von dem jeweiligen datum besitzen!

        Code:
        select * from mitarbeiter where m_id not in (
        select distinct r_mitarbeiter
        from rechnungen
        where (r_datum = '09/17/2009'))
        ich hab insgesamt 994 mitarbeiter... wenn ich das gleiche statement mit IN statt NOT IN mache, dann sind es 941! folglich sollten bei NOT IN 53 mitarbeiter angezeigt werden! ich bekomme aber immer eine leere menge (0 ergebnisse)!

        wisst ihr woran das liegt?

        lg

        EDIT:

        Code:
        select * from mitarbeiter where m_id not in (
        select distinct r_mitarbeiter
        from rechnungen
        where r_mitarbeiter is not null and (r_datum = '09/17/2009'))
        so hats jetzt funktioniert, aber warum??

        Comment


        • #5
          Wenn das Feld r_mitarbeiter NULL-Werte enthält, funktioniert NOT IN prinzipiell nicht.

          Gruß
          docendo discimus

          Comment


          • #6
            Hallo,
            Originally posted by frauwue View Post
            Wenn das Feld r_mitarbeiter NULL-Werte enthält, funktioniert NOT IN prinzipiell nicht.

            Gruß
            ...und das liegt daran, wie ein IN bzw. NOT IN intern umgesetzt wird.

            Vereinfachtes Beispiel: das Subselect liefert 1, 2 und NULL. Eine Abfrage mit "where a in" wird intern als: where a = 1 or a = 2 or a = null aufgelöst. Wenn a also 1 oder 2 ist, ist der gesamte Ausdruck True.
            Die gleiche Abfrage mit "where a not in" ist intern ein: where a != 1 and a != 2 and a != null.
            Bei a != null liegt nun der Hase im Pfeffer. Da ein Vergleich mit NULL naturgemäß IMMER False liefert (nichts ist gleich oder ungleich NULL, selbst NULL nicht), wird der gesamte AND-Ausdruck IMMER False, egal welchen Wert a annimmt!

            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment

            Working...
            X