MYSQL - nach timestamps innerhalb eines Tages selektieren
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
antwort
arbeiten
code
darstellen
date
datum
endzeit
frage
halten
laufen
liegen
logischen operatoren
nutzen
performance
problem
schleife
start
tag
uhr
-
Hi, der Titel beschreibt es schon zimlich gut:
Ich habe in einer Tabelle tag/start">Start- und Endtimestamps:
starttimestamp | endtimestamp
Nun möchte ich alle Einträge selectieren, die mit Ihrer Start / Endzeit / beidem innerhalb eines Tages liegen.
zB alle einträge deren starttimestamp / endtimestamp / sowhol als auch am 25.04.2013 zu irgendeiner Zeit beginnt also innerhalb des Tages liegt.
Das könnte man via PHP Schleife lösen, aber eine MySQL Abfrage wäre ein bisschen eleganter. leider weiss ich hier nicht wie man das bewerkstelligen kann.
Ich hoffe Ihr könnt mir hier weiterhelfen!
Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Eigentlich ganz einfach. Du erstellst per PHP die entsprechenden Timestamps ($starttimestamp, $endtimestamp) und kombinierst das dann mit deiner MySQL Abfrage mit < > und logischen Operatoren. Raus kommt dann sowas:
$abfrage = "SELECT * FROM eintraege WHERE timestamp > '$starttimestamp' AND timestamp < '$endtimestamp'";
Du prüfst also, ob der timestamp größer als heute Morgen um 0:00 Uhr ist und kleiner als heute Abend um 23:59 ist.
Und fertig ist die MySQL Abfrage ;)
Beitrag zuletzt geändert: 22.4.2013 22:56:51 von hc-tools -
Danke für deine Antwort, allerdings ist es so genau verkehrt herum: ich habe ein Datum (zB den 25.04.2013) und in der Datenbank habe ich einträge mit starttimestamp und endtimestamp. Und ich möchte alle Einträge, die in diesem Datum liegen (also entweder mit starttimestamp drinstecken oder mit endtimestamp oder mit beidem).
Ferner wollte ich wie gesagt die Performance so gut es geht halten. Ich hatte daher gehofft das ganze über SQL laufen zu lassen.
Ich meine ich hätte mal gehört das MySQL mit Daten & so arbeiten kann. Vielleicht geht es ja darüber?
MFG -
Ok, dann nochmal ein Versuch
$tagesendtimestamp stellt den Timestamp des Tages um 23:59 dar.
$abfrage = "SELECT * FROM eintraege WHERE starttimestamp < '$tagesendtimestamp ' OR endtimestamp < tagesendtimestamp;
Das müsste doch jetzt eigentlich das sein was du suchst? Meines wissens ist das doch eine Abfrage über SQL. Du hast ja in PHP keine Schleife die du Abfragst sondern sendest direkt dein SQL. Das kannst du ganz einfach testen, indem du das mal in PhpMyAdmin ausprobierst und $tagesendtimestamp durch einen beliebingen Timestamp ersetzt. Dann läuft alles ohne PHP -
Der richtige Query ist:
SELECT * FROM eintraege WHERE timestamp > UNIX_TIMESTAMP('$date') OR timestamp < DATE_ADD(UNIX_TIMESTAMP('$date'),INTERVAL 23:59:59 HOUR_MINUTE_SECOND)
-
So lernt man doch immer noch was dazu. Frage ich mich nur warum ich sonst immer alles so umständlich über PHP gemacht habe
Beitrag zuletzt geändert: 22.4.2013 23:42:57 von hc-tools -
Es ist ja auch nicht wirklich merkbar langsamer mit PHP, das sollte kein Problem darstellen, aber so wollter der TE es nunmal und es ist auch irgendwie einfacher zu nutzen, da nur ein Dateum eingesetzt werden muss.
-
Super! Genau danach hatte ich gesucht.
Es macht das ganze auch übersichtlicher und vorallem unabhängiger wenns nicht über PHP läuft.
Vielen Dank -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage