Archiv verlassen und diese Seite im Standarddesign anzeigen : TimeStamp + 86400--> löschen
SonicCGN 17-08-2006, 19:57 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:
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 OR die EbayEndzeit + 1 Tag kleiner als Aktuelle TimeStamp.
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
schau dir mal DATESUB() an.
NOW() kennst du sicher schon.
also einfach delete where datum DATESUB(jetzt, interval 1 Tag)
garyx7de 17-08-2006, 20:45 $query = "DELETE FROM `ebaycron` WHERE `endtime` > ".time()." OR (`endtime` + 86400) < ".time().";"
SonicCGN 17-08-2006, 20:54 Habe es jetzt so:
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 :confused:
ouch. mit unix-timestamp geht das natürlich nicht. sorry.
Sind ja zwei verschiedene Formate.
garyx7de 17-08-2006, 22:17 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*
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.)
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?
SonicCGN 18-08-2006, 16:38 Nun gut... dann Poste ich mal einen Auszug aus der DB:
CREATE TABLE `ebaycron` (
`user` varchar(64) NOT NULL default '',
`title` varchar(64) NOT NULL default '',
`link` text NOT NULL,
`description` text NOT NULL,
`pubdate` varchar(24) NOT NULL default '',
`currentprice` int(10) NOT NULL default '0',
`endtime` int(10) NOT NULL default '',
`bidcount` varchar(5) default '0',
`category` varchar(64) NOT NULL default '',
`auctiontype` varchar(64) NOT NULL default ''
) TYPE=MyISAM;
--
-- Daten für Tabelle `ebaycron`
--
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
Original geschrieben von SonicCGN
`endtime` varchar(10) NOT NULL default '',
Und VARCHAR halten wir für einen geeigneten Spaltentyp, um Datumsberechnungen damit durchzuführen ...?
SonicCGN 18-08-2006, 20:21 Stimmt.. Hab es mal in INT geändert.
AUTSCH!
wenn du schon änderungen vornimmst, dann nimm doch einen geeigneten Spaltentyp, um Datumsberechnungen damit durchzuführen
SonicCGN 18-08-2006, 20:34 Was ist da Treffender als INT ??? -> bigINT ???
Date oder DateTime. u.U. auch Timestamp
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?
SonicCGN 18-08-2006, 21:31 Original geschrieben von jhaase
Was für ein Datumformat ist die Endzeit auf Ebay?
Wurde oben schon öfters festgestellt :rolleyes:
Hat sich aber soeben erledigt das ich es mir bei phpMyAdmin abgeschaut habe;
mysql_db_query( "$DBN", "DELETE FROM `ebaycron` WHERE `endtime` > UNIX_TIMESTAMP() OR (`endtime` + 86400) < UNIX_TIMESTAMP()");
So klappt es wunnaba. Hoffe ich..
Dennoch .. thänxx an alle.
Cu Sonic
Mir gefällt die Bedingung
WHERE `endtime` > UNIX_TIMESTAMP()
immer noch ausserordentlich.
Naja, vielleicht optimiert er das ganze noch durch ein AND 1 oder so. ;)
SonicCGN 18-08-2006, 22:55 Jaja... macht euch nur lustig :huep:
Funzt aber...
|