Ankündigung

Einklappen
Keine Ankündigung bisher.

Delete, Interval...

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Delete, Interval...

    Nabend,

    ich habe eine Tabelle aus der ich alle Einträge löschen will, bei denen der Timestamp älter als 10 Minuten ist.

    Habe mir das so zusammen geschustert:

    DELETE FROM `user_online` WHERE timestamp_feld < DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL - 10 MINUTE)
    Da löscht er mir momentan aber jeden Eintrag... Habe ich da irgendwo einen Denkfehler drin?

    Danke für die Hilfe

  • #2
    Zunächst einmal: Ist timestamp_feld überhaupt vom Typ DATETIME, DATE oder TIMESTAMP oder hast du eine INT-Spalte, in der ein UNIX-Timestamp steht?
    Und warum nimmst du nicht DATE_SUB()?

    Kommentar


    • #3
      Ist eine timestamp spalte... hab mal date_sub vor geschrieben, aber das geht auch nicht.

      Kommentar


      • #4
        Mach doch erstmal ein entsprechendes SELECT draus und schau Dir an, was passiert.

        Kommentar


        • #5
          Wie gesagt, dann gibt er alle zurück... oder löscht halt alle. Aber wo ist der Fehler in dem Statement?

          EDIT: Ich glaub ich habs... mit:

          Code:
          SELECT * FROM `user_online` WHERE timestamp_feld < UNIX_TIMESTAMP(NOW()) - 600
          scheint es zu funktionieren.

          Kommentar


          • #6
            Zitat von patr1k
            EDIT: Ich glaub ich habs... mit:

            Code:
            SELECT * FROM `user_online` WHERE timestamp_feld < UNIX_TIMESTAMP(NOW()) - 600
            scheint es zu funktionieren.
            Wenn das so ist, dann ist das Attribut timestamp_feld definitiv nicht vom Typ TIMESTAMP
            Gruss
            L

            Kommentar


            • #7
              Hab ich im PHP MyAdmin aber ausgewählt...

              timestamp_feld => timestamp(14)

              Zwischnen Datetime und time...

              Frohes Neues...

              Kommentar


              • #8
                Zitat von lazydog
                Wenn das so ist, dann ist das Attribut timestamp_feld definitiv nicht vom Typ TIMESTAMP
                Naja, unter MySQL < 4.1 sollte das auch funktionieren, wenn auch nicht so wie gewollt, da dort die TIMESTAMP-Spalten im Format YYYYMMDDHHMMSS gespeichert wurden, was letztendlich auch nur ein Integer ist.

                Zitat von patr1k
                Hab ich im PHP MyAdmin aber ausgewählt... Question

                timestamp_feld => timestamp(14)
                Dann solltest du zum Vergleichen mit dem aktuellen Datum allerdings nicht die Funktion UNIX_TIMESTAMP() benutzen. Eine Spalte vom Typ TIMESTAMP speichert das Datum lediglich im Format YYYYMMDDHHMMSS (vor 4.1) bzw. YYYY-MM-DD HH:MM:SS (ab 4.1)[/url]

                Für Datumsvergleiche müsstest du hier also etwas anders herangehen:
                Code:
                DELETE
                    `user_online`
                WHERE
                    timestamp_feld < DATE_SUB(NOW(), INTERVAL 10 MINUTE)

                Kommentar

                Lädt...
                X