MySQL: Abfrag im Zeitraum X
hansi
- datenbank
0 Sven Rautenberg0 hansi0 Ilja2 Christian Seiler
Gude,
ich hab ne Tabelle mit den Feldern date|head|inhalt. Meine Frage, gibt es einen direkten mysql-befehl um alles auszugeben im Datumsbereich x / x.
Also:
Ich will die Einträge vom 01.01.00 bis zum 10.02.00. Kann ich das dann alles in Array ausgeben?
euer
hansi
Moin!
ich hab ne Tabelle mit den Feldern date|head|inhalt. Meine Frage, gibt es einen direkten mysql-befehl um alles auszugeben im Datumsbereich x / x.
Ja.
Also:
Ich will die Einträge vom 01.01.00 bis zum 10.02.00. Kann ich das dann alles in Array ausgeben?
Ja.
"BETWEEN x AND x" wäre eine der Möglichkeiten in MySQL - passende Felddatentypen vorausgesetzt.
- Sven Rautenberg
Hi,
Ich bekomme nur: Check your Syntax.
<?php
include('mysql.php');
$result = mysql_query("SELECT * FROM CMS_News BETWEEN '2007.04.01' AND '2007.04.03'", $DatabasePointer);
while($row = mysql_fetch_array($result)) {
$date = $row['date'];
$title = $row['title'];
$details = $row['details'];
}
?>
was ist falsch?
gruß
hansi
yo,
$result = mysql_query("SELECT * FROM CMS_News BETWEEN '2007.04.01' AND '2007.04.03'", $DatabasePointer);
sql abfragen bitte immer php angeben, wenn es nur um die sql anweisung geht. in deiner anweisung fehlt die where klausel.
SELECT * FROM CMS_News WHERE name_datumspalte BETWEEN '2007.04.01' AND '2007.04.03'
Ilja
Hallo,
<?php
include('mysql.php');
$result = mysql_query("SELECT * FROM CMS_News BETWEEN '2007.04.01' AND '2007.04.03'", $DatabasePointer);
Dein SELECT-Statement ist also:
SELECT * FROM CMS_News BETWEEN '2007.04.01' AND '2007.04.03'
Das kann nicht funktionieren. Mir scheint, dass Dir die Grundlagen zu SQL noch nicht ganz klar sind. Ich würde Dir mal empfehlen, das Tutorial im MySQL-Handbuch zu lesen.
Zu Deinem eigentlichen Problem: Wenn Du nun alle Datensätze aus einer Tabelle bekommen willst, würdest Du ja sowas machen wie:
SELECT * FROM CMS_News
Wenn Du nun z.B. auf irgend ein Feld einschränken wolltest, z.B. nur alle Datensätze haben wolltest, deren Titel "hallo" ist, dann würdest Du sowas machen:
SELECT * FROM CMS_News WHERE title = 'hallo'
Mit WHERE schränkst Du Deine SQL-Abfrage also ein. Genau das brauchst Du dann auch für die BETWEEN-Syntax, die Sven Dir genannt hat.
Nun zu der Frage wie Deine Abfrage aussehen sollte:
SELECT * FROM CMS_News WHERE
date BETWEEN '2007-04-01' AND '2004-04-03'
(Deine gewählte Syntax für Datumsangaben '2004.04.03' schluckt MySQL auch, allerdings habe ich die vorher ehrlich gesagt noch NIE gesehen, ich bevorzuge Angaben nach ISO 8601, d.h. mit Bindestrich, ist aber im Prinzip egal)
Da Dein Tabellenname nahelegt, dass Du in der Tabelle offensichtlich News speicherst, wäre es eventuell nicht verkehrt, die abgefragten Datensätze auch zu sortieren, d.h.
SELECT * FROM CMS_News WHERE
dateBETWEEN '2007-04-01' AND '2004-04-03' ORDER BY
date DESC
(Absteigend nach dem Datum)
SELECT * FROM CMS_News WHERE
dateBETWEEN '2007-04-01' AND '2004-04-03' ORDER BY
date ASC
(Aufsteigend nach dem Datum)
Viele Grüße,
Christian