2012-11-26 1 views
11

Ich habe folgende Tabelle:Überprüfen Sie, ob das aktuelle Datum zwischen zwei Daten + mysql select-Abfrage ist

id  dateStart  dateEnd  active 
1  2012-11-12 2012-12-31 0 
2  2012-11-12 2012-12-31 0 

I heutigen Datum zwischen dateStart und dateEnd vergleichen möchten.

Folgende ist meine Abfrage für diese:

$todaysDate="2012-26-11"; 
$db = Zend_Registry::get("db"); 
$result = $db->fetchAll("SELECT * FROM `table` WHERE active=0 AND {$todaysDate} between dateStart and dateEnd"); 
return $result; 

Aber seine nicht funktioniert. Jede Lösung. Vielen Dank im Voraus.

+0

Kannst du genauer sein? Was ist der Fehler? –

+0

@Mark Byres: Es gibt 0 Zeilen zurück. Leer. – Sky

+0

Was ist das Datumsformat von $ todaysDate? –

Antwort

24

Try this :: Das wird Ihr Problem lösen

SELECT * FROM `table` WHERE active=0 AND CURDATE() between dateStart and dateEnd 
+0

ist es CURRDATE() oder CURDATE()? – Sky

+0

@ kj7: Sorry, Tippfehler ... –

+0

@Shashi Kant: Danke .... seine Arbeit – Sky

2

MySQL verwendet YYYY-MM-DD standardmäßig:

$todaysDate="2012-26-11"; 

sein sollte:

$todaysDate="2012-11-26"; 

Und Sie brauchen einfache Anführungszeichen um es in der Abfrage.

0
$todaysDate="2012-11-26";//changed date 
$db = Zend_Registry::get("db"); 
$select=$db->query("SELECT * FROM `table` WHERE active=0 AND {$todaysDate} between dateStart and dateEnd"); 
$result = $select->fetchAll(); 
return $result; 
0
$sql = mysql_query("SELECT * FROM register WHERE CURDATE() between reg_start_date and reg_end_date") or die(mysql_error()); 
0

Sie benötigt einfache Anführungszeichen um das geänderte Datum zu setzen: "Aber es funktioniert nicht"

"SELECT * FROM `table` WHERE active=0 AND '{$todaysDate}' between dateStart and dateEnd"