TimeStamp + 86400--> löschen

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

  • TimeStamp + 86400--> löschen

    Hallo !

    Ich habe mir eine Ebay Abfrage gebastelt. Diese zeigt mir meine (und andere) angebotenen Artikel an.
    Dieses in einem Cron was alle 15 minuten ausgeführt wird.

    Zur zeit ist es so das ich erst die gesamte Tabelle lösche um sie dann mittels meines Scriptes wieder zu füllen.
    Sieht so aus:
    PHP-Code:
    mysql_db_query(    "$DBN""TRUNCATE TABLE `ebaycron`"); 

    Nun wollte ich aber das NUR einträge gelöscht werden wo die Endzeit (unixTimeStamp) größer als AktuelleTimeStamp [COLOR=red] OR [/COLOR] die EbayEndzeit + 1 Tag kleiner als Aktuelle TimeStamp.

    PHP-Code:
    mysql_db_query(    "$DBN""DELETE FROM `ebaycron` WHERE `endtime` > date(U)  OR `endtime` + 86400 < date(U)"); 
    Also im klartext soll mir noch 24 Stunden angeziehgt werden was eigentlich schon abgelaufen ist.
    Kann mir jemand weiterhelfen und meinen PHP-SQL Befehl richtigstellen ?

    Cu Sonic
    MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
    GD 2.0.28

  • #2
    schau dir mal DATESUB() an.
    NOW() kennst du sicher schon.

    also einfach delete where datum DATESUB(jetzt, interval 1 Tag)

    Kommentar


    • #3
      PHP-Code:
      $query "DELETE FROM `ebaycron` WHERE `endtime` > ".time()."  OR (`endtime` + 86400) < ".time().";" 
      Mafia Browsergame - Scripts

      Wer glaubt, ein Christ zu sein, weil er die Kirche besucht, irrt sich. Man wird ja auch kein Auto, wenn man in eine Garage geht.
      Albert Schweitzer (14.01.1875 - 04.08.1965)

      Kommentar


      • #4
        Habe es jetzt so:
        PHP-Code:
        mysql_db_query(    "$DBN""DELETE FROM `ebaycron` WHERE endtime > NOW() OR `endtime` DATE_SUB( NOW( ) , INTERVAL 1 DAY )"); 
        Klappert aber nicht -> bekomme zwar keinen error angeziegt aber nur wird der alte Kram nicht gelöscht.

        Cu sonic

        EDIT garyx7de:
        Dein Code funzt nicht habe grade mal manuell einen eintrag erstellt wo ENDTIME + 1000 war. Der wurde trotzdem gelöscht

        Zuletzt geändert von SonicCGN; 17.08.2006, 20:05.
        MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
        GD 2.0.28

        Kommentar


        • #5
          ouch. mit unix-timestamp geht das natürlich nicht. sorry.
          Sind ja zwei verschiedene Formate.

          Kommentar


          • #6
            Original geschrieben von TobiaZ
            ouch. mit unix-timestamp geht das natürlich nicht. sorry.
            Sind ja zwei verschiedene Formate.
            Welches Format ist dann? *grübel*
            Mafia Browsergame - Scripts

            Wer glaubt, ein Christ zu sein, weil er die Kirche besucht, irrt sich. Man wird ja auch kein Auto, wenn man in eine Garage geht.
            Albert Schweitzer (14.01.1875 - 04.08.1965)

            Kommentar


            • #7
              was ist das für eine Frage? Mysql macht in dem Fall mit nem Unixstamp halt nicht all zu viel.

              eigentlich sieht dein (garys) code gut aus. ich denke mal, dass die vorhandenen daten nicht das sind, was Threadstarter erwartet.

              Bitte mal nen datenauszug. (zu löschende Daten bitte kennzeichnen.)

              Kommentar


              • #8
                mir fällt auf, dass du von endzeit und ebayendzeit sprichst, aber nur ein feld `endzeit`hast. Zudem wird `endzeit` > time() alle Auktionen mit einer zukünftigen Endzeit löschen und das kann es nicht sein.

                Es braucht nur eine Bedingung: delete ... where `endzeit` < time() - interval 1 day. [syntax edit]

                Die genaue syntaxmässige Formulierung der Bedingung hängt von den Datentypen ab, also ob `endzeit`sql-datetime oder php-timestamp oder was sonst darstellte, als es INSERTed wurde. Was war es?
                Zuletzt geändert von jhaase; 18.08.2006, 07:47.

                Kommentar


                • #9
                  Nun gut... dann Poste ich mal einen Auszug aus der DB:
                  PHP-Code:
                  CREATE TABLE `ebaycron` (
                    `
                  uservarchar(64NOT NULL default '',
                    `
                  titlevarchar(64NOT NULL default '',
                    `
                  linktext NOT NULL,
                    `
                  descriptiontext NOT NULL,
                    `
                  pubdatevarchar(24NOT NULL default '',
                    `
                  currentpriceint(10NOT NULL default '0',
                    `
                  endtimeint(10NOT NULL default '',
                    `
                  bidcountvarchar(5) default '0',
                    `
                  categoryvarchar(64NOT NULL default '',
                    `
                  auctiontypevarchar(64NOT NULL default ''
                  TYPE=MyISAM;

                  -- 
                  -- 
                  Daten für Tabelle `ebaycron`
                  -- 
                  EDIT:
                  Insert-Statements wegen Mega-Überbreite entfernt.
                  wahsaga



                  Das sind die Daten die ich aus dem RSS von EBAY ziehe.

                  Dort ist auch die EndZeit (endtime) hinterlegt. Diese möchte ich nach Ablauf NICHT sofort löschen sondern erst nach einem Tag !

                  Cu Sonic
                  Zuletzt geändert von SonicCGN; 18.08.2006, 19:18.
                  MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
                  GD 2.0.28

                  Kommentar


                  • #10
                    Original geschrieben von SonicCGN
                    `endtime` varchar(10) NOT NULL default '',
                    Und VARCHAR halten wir für einen geeigneten Spaltentyp, um Datumsberechnungen damit durchzuführen ...?
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Stimmt.. Hab es mal in INT geändert.
                      MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
                      GD 2.0.28

                      Kommentar


                      • #12
                        AUTSCH!

                        wenn du schon änderungen vornimmst, dann nimm doch
                        einen geeigneten Spaltentyp, um Datumsberechnungen damit durchzuführen

                        Kommentar


                        • #13
                          Was ist da Treffender als INT ??? -> bigINT ???
                          MySQL 5.0.45 mit PHP 5.2.4 auf Suse 10.0.
                          GD 2.0.28

                          Kommentar


                          • #14
                            Date oder DateTime. u.U. auch Timestamp

                            Kommentar


                            • #15
                              Original geschrieben von SonicCGN

                              Das sind die Daten die ich aus dem RSS von EBAY ziehe.
                              Von dort kommt auch die EndZeit (endtime) .
                              Was für ein Datumformat ist die Endzeit auf Ebay?

                              Kommentar

                              Lädt...
                              X