MySQL DATE vergleichen

Kaktus621

Grünschnabel
Hallo!

Ich habe ein komisches Problem. Mit einem PHP Skript möchte ich eine Liste von Daten holen, dessen Datum in einem bestimmten Zeitraum ist. Also habe ich folgende Zeile geschrieben:

Code:
$orders = mysql_query('SELECT `orderid` FROM orders WHERE `uid`='.$pUid.' AND datestamp >='.date('Y-m',$pDate).'-01 AND datestamp <='.date('Y-m-t', $pDate));

$pDate ist irgendein ein Timestamp innerhalb des Monats, für den die Liste geholt werden soll. Die Spalte "datestamp" in der Datenbank ist vom Typ DATE.

Führe ich diese Query aus, bekomme ich kein Ergebnis. Auch ein Einsatz von BETWEEN anstatt der zwei Abfragen bringt kein Ergebnis :

Code:
$orders = mysql_query('SELECT `orderid` FROM orders WHERE `uid`='.$pUid.' AND datestamp BETWEEN '.date('Y-m',$pDate).'-01 AND '.date('Y-m-t', $pDate));

Lasse ich hingegen die obere Schranke des Zeitraums weg (also habe nur die Abfrage '>= '.date('Y-m',$pDate).'-01', so werden Daten richtig ausgegeben, die eigentlich aber auch mit der oberen Schranke angezeigt werden müssten.

Wieso funktioniert also weder das < / <= noch das BETWEEN nicht bei Spalten vom Typ DATE, > / >= hingegen schon? Oder habe ich einen Fehler gemacht?
 
Hi,

sollte das nicht
PHP:
date('Y-m-d', $pDate)
anstatt von
PHP:
date('Y-m-t', $pDate)
heißen?

Gruß
BK
 
Nein, t ist schon richtig. Sorry, habe vergessen zu schreiben, dass der Zeitraum der gesamte Monat sein soll. Also vom Anfang bis zum Ende des Monats (und t gibt ja die Anzahl der Tage im Monat, also somit den letzten Tag des Monats aus).
 
Ok,

das wusst ich nicht ;) Aber ok ^^

Hast du es auch schon mal versucht mit Hilfe von YEAR(), bzw. MONTH() zu machen?
Also so ungefähr:
PHP:
$orders = mysql_query('
SELECT 
  `orderid`
FROM 
  orders 
WHERE 
  `uid`=' . $pUid . ' 
AND 
  YEAR(datestamp) = ' . date('Y', $pDate) . '
AND 
  MONTH(datestamp) = ' . date('m', $pDate) . ';
');

Gruß
BK
 
Oh, diese Funktionen kannte ich noch garnicht. Ich habe sie jetzt probiert und sie scheinen zu Funktionieren.

Vielen vielen Dank :) Wieder etwas neues dazugelernt!
 
Zurück