wie alt ist ein DB eintrag?

DonDemf

Erfahrenes Mitglied
Hallo Leuts,
ich lasse von meinem Script einen Eintrag in die DB machen und habe in dieser tabelle auch eine Datum spalte mit der Formatierung TIMESTAMP, CURRENT_TIMESTAMP!

Ich möchte nun in meinen script eine abfrage machen, die kontrolliert ob der Eintrag älter als drei Tage ist.
Jedoch weiß ich nicht genau, welche PHP Zeit funktion dazu geeignet ist. TIMESTAP trgt ja beispielweise: 2011-07-06 23:14:00 ein.
also irgendwas in der art:

if($sql->datum < (als drei tage) $datum) {
ist älter als dreitage } else {
ist noch frisch }
 
Hier hab ich 2 Methoden kurz aufgelistet, wie man Datensätze löschen kann die älter als X Tage sind. Das ganze kannst du auch für dein Problem adaptieren, in dem du nur entsprechende Einträge per SELECT auswählst. Ansonsten, wenn du wirklich alle Daten "selecten" willst und das Ganze mit PHP lösen möchtest, hilft die die DateTime Klasse weiter http://de.php.net/manual/de/function.date-diff.php
 
ja, aber trifft deine methode auch auf die Current_timestamp methode zu? oder irgendein anders format=
 
CURRENT_TIMESTAMP und CURRENT_TIMESTAMP() sind einfach nur Synonyme für die Funktion NOW(). Ergo liegt dein Datum in dem folgenden Format vor : 'YYYY-MM-DD HH:MM:SS'.

=> Ja es geht, wieso sollte es nicht gehen? Selbst wenn du z.B. direkt den Timestamp in Form einer Ganzzahl speichern würdet, würde die Methode noch funktionieren, nur müsstest du z.B. dann nicht extra noch den UNIX_TIMESTAMP von MySQL berechnen lassen.
 
Funktioniert leider nicht...

Folgende fehlermeldung:
HTML:
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 '' at line 1
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /users/dondemf/www/fifaliga/kader.php on line 87


Code:
PHP:
$abfragecomp = 'SELECT * FROM transfermarkt_spieler WHERE mannschaft = "'.$_SESSION["team"].'" AND trainer = "'.$_SESSION["username"].'" AND TO_DAYS((now()) - TO_DAYS(datum) > 3';
$ergebniscomp = mysql_query($abfragecomp);
echo mysql_error();
while($comp = mysql_fetch_object($ergebniscomp))
   {
   echo 'vom computer zu kaufen: '.$comp->name.'';
   }
 
Zuletzt bearbeitet:
You have an error in your SQL syntax;
Mit deinem SQL String stimmt was nicht, lass dir den mal per echo ausgeben, dann sollte man den Fehler sehen.
 
ich habs ausgeben lassen und bekomme folgendes
Code:
SELECT * FROM transfermarkt_spieler WHERE trainer = "DonDemf" AND TO_DAYS((now()) - TO_DAYS(datum) > 3

D.h irgendwas stimmt mit dem code nicht, den ich von dir habe :S
 
Da ist die Klammer falsch gesetzt. Probiers mal so
Code:
SELECT * FROM transfermarkt_spieler WHERE trainer = "DonDemf" AND (TO_DAYS(now()) - TO_DAYS(date)) > 3
 
Wie ich das lösen würde:
- Datum der Beiträge als timestamp speichern (Anz. Sek seit 01.01.1970)
- Datum-Cols auslesen
- Wenn (Ausgelesenes Datum plus 60*60*72 < Aktueller timestamp) --> Beitrag löschen

60*60*72 entspricht der Anzahl Sekunden von drei Tagen. Alternativ kannst auch gleich 259200 addieren.
 
Zurück