2012-11-26 11 views
11

Mam poniższej tabeli:Sprawdź, czy bieżąca data jest między dwiema datami + mysql kwerenda wybierająca

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

Chcę porównać dzisiejszą datę w między DateStart i dateEnd.

Poniżej moje zapytanie o to:

$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; 

Ale to nie działa. Każde rozwiązanie. Z góry dzięki.

+0

Czy mógłbyś to sprecyzować? Jaki jest błąd? –

+0

@ Mark Byres: Zwraca 0 wierszy. Pusty. – Sky

+0

jaki jest format daty $ todaysDate? –

Odpowiedz

24

Spróbuj :: To rozwiąże Twój problem

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

czy to CURRDATE() czy CURDATE()? – Sky

+0

@ kj7: Przepraszam, wpisanie pomyłki ... –

+0

@Shashi Kant: Dzięki .... działa – Sky

2

MySQL używa YYYY-MM-DD domyślnie:

$todaysDate="2012-26-11"; 

powinno być:

$todaysDate="2012-11-26"; 

I trzeba apostrofów wokół niego w zapytaniu.

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

Trzeba było umieścić apostrofów wokół zmienionego terminu: "Ale jej nie działa"

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