1.2k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hi,

wie kann ich Datensätze auswählen, die in einem bestimmten Zeitraum erstellt wurden.

Folgendermaßen geht es leider nicht:
"SELECT * FROM irgendwas WHERE (".time()." - time_data) < 300)


Bei dem obigen Beispiel sollen alle Datensätze ausgewählt werden, die jünger als 300 Sekunden sind. time_data ist der Timestamp zum Zeitpunkt der Erstellung der Daten.

PS: ich möchte es ungern mit mktime oder BETWEEN NOW() - INTERVAL 1 DAY AND NOW() machen.

Über Hilfe wäre ich sehr froh, danke.

3 Antworten

0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Soll "jünger als 300 Sekunden" variabel sein (also nicht immer von jetzt ausgehend sein, sondern auch z.B. von letzter Woche Mittwoch jünger als 300 Sekunden sein)?

Sprechen wir von PHP und MySQL?
0 Punkte
Beantwortet von
Ja, wir sprechen von PHP und MYSQL. Das Problem ist eigentlich, dass ich nicht weiß, wie man die Daten einer Spalte bereits beim SELECTEN bearbeiten kann.

Im obigen Beispiel ist time_data eine Spalte der MYSQL-Tabelle. Nun soll diese bearbeitet werden, sie soll nämlich von der aktuellen time abgezogen werden. Das
WHERE (".time()." - time_data) < 300)
gibt aber kein Ergebnis aus. Muss das time_data in irgendwelche Klammern oder sonstwie besonders gekennzeichnet werden?
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
In deinem Beispiel vermischst du PHP mit MySQL - du kannst genausogut folgendes machen:

$sql= "SELECT * FROM irgendwas WHERE (".time()." - time_data) < 300)";
echo $sql;

...und den ausgegebenen Befehl direkt unter MySQL absetzen.

Du sagst, deine Spalte time_data ist vom Typ Timestamp. Wenn das stimmt, könntest du den Befehl wie folgt formulieren:

SELECT * FROM irgendwas WHERE time_data BETWEEN current_timestamp()- 300 AND current_timestamp()

...Sollte das nicht klappen, dann überprüf bitte den genauen Datentyp der Spalte. Ich hab es getestet.
...