Hallo,
Ich muss dazu sagen, dass ich auf dem Gebiet noch ein Frischling bin.
das ist nicht schlimm. Jeder war das mal - auch wenn's manche später nicht mehr wahrhaben wollen.
mysql_query("SELECT from tv WHERE datum BETWEEN now() AND INTERVAL 1 HOUR") OR die(mysql_error());
> das ist aber offensichtlich nicht richtig. Ist das falsch gedacht oder falsch gemacht (oder beides?)
Es ist eine gute Idee, beim Erlernen einer neuen Technik sich nach Möglichkeit nicht mit weiteren Techniken herumschlagen zu müssen. Beim Erlernen von SQL und Durchtesten von SQL-Statements ist es am besten, wenn man sich das in einem SQL-Client wie dem MySQL-Query-Browser (oder seinem Nachfolger) oder gern auch in phpMyAdmin anschaut:
~~~sql
SELECT
NOW()
liefert den aktuellen Zeitpunkt
SELECT
NOW() + INTERVAL 1 HOUR
liefert den Zeitpunkt, der von jetzt an in einer Stunde liegt. Du könntest auch weniger intuitiv
SELECT
DATE_ADD(NOW(), INTERVAL 1 HOUR)
schreiben.
SELECT NOW() BETWEEN NOW( ) AND INTERVAL 1 HOUR
produziert dagegen einen SQL-Syntaxfehler. SQL weiß nichts davon, dass Du die Zeitspanne auf den Wert zwischen BETWEEN und AND draufaddieren möchtest. Du musst es schon explizit sagen, worauf ich Dich mit
ZWISCHEN jetzt UND jetzt + 1 Stunde
hinweisen wollte:
SELECT
NOW( ) AS jetzt,
NOW( ) + INTERVAL 1 HOUR AS `in einer Stunde` ,
NOW( ) BETWEEN NOW( ) AND NOW( ) + INTERVAL 1 HOUR AS Test
gibt mir (im Augenblick der Ausführung) folgendes Ergebnis:
jetzt in einer Stunde Test
-----------------------------------------------------
2010-02-10 19:34:42 2010-02-10 20:34:42 1
Du siehst: der Zeitpunkt der "jetzt" ist liegt zwischen dem "jetztigen" Zeitpunkt und dem in einer Stunde.
Bis auf das fehlende "NOW() +" hinter AND war's schon richtig. MySQL wird Dir dennoch einen Fehler um die Ohren hauen, bis Du die Syntax korrekt hinbekommst.
Noch ein Hinweis zum Schluss: die() ist keine Fehlerbehandlung.
Freundliche Grüße
Vinzenz