Literunner: Syntax fehler bei DELETE

Moinsen,

ich möchte gerne alle Datensätze löschen, die älter sind als 7 Tage. Dabei muss noch "ok" den Wert 1 haben.

DELETE FROM tbl_eintrag AS k WHERE k.startdate < date_add(current_date, interval -7 day) AND ok = 1

Leider bekomme ich immer einen Syntax Fehler:

Fehler:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS k WHERE k.startdate < date_add(current_date, interval -7 day) AND ok ' at line 1

Vielleicht jemand eine Idee wo das Syntax Problem liegt?

Vielen Dank

  1. Mahlzeit,

    mal ganz ohne test: courent_date()
    Die Klammern sind IMO nötig.

    --
    42
    1. Tach!

      mal ganz ohne test: courent_date()
      Die Klammern sind IMO nötig.

      Nö, CURRENT_DATE gibt es mit und ohne Klammern. Aber wenn wir schon dabei sind, man kann das Konstrukt

      date_add(current_date, interval -7 day)

      noch leicht verkürzen:

      CURRENT_DATE - INTERVAL 7 DAY

      dedlfix.

      1. Moinsen,

        danke. Habe das jetzt ohne AS gemacht.

        Nö, CURRENT_DATE gibt es mit und ohne Klammern. Aber wenn wir schon dabei sind, man kann das Konstrukt

        date_add(current_date, interval -7 day)

        noch leicht verkürzen:

        CURRENT_DATE - INTERVAL 7 DAY

        Funktioniert auch 1A :)

        Vielen Dank

        Literunner

  2. Tach!

    DELETE FROM tbl_eintrag AS k WHERE k.startdate < date_add(current_date, interval -7 day) AND ok = 1
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS k WHERE k.startdate < date_add(current_date, interval -7 day) AND ok ' at line 1

    Wenn das AS angemeckert wird, dann lass es weg. Bei einem einzigen Tabellennamen einen Alias zu verwenden, ist nur Mehrarbeit.

    dedlfix.