2012-11-26 9 views
11

ho seguente tabella:Verificare se la data corrente è compresa tra due date + mysql query di selezione

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

voglio mettere a confronto data odierna tra dateStart e dateEnd.

seguito è la mia domanda per questo:

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

Ma non il suo lavoro. Qualsiasi soluzione. Grazie in anticipo.

+0

Può essere più preciso? Qual è l'errore? –

+0

@ Mark Byres: restituisce 0 righe. Vuoto. – Sky

+0

qual è il dataformat di $ todaysDate? Il formato data –

risposta

24

Prova questo :: Questo risolverà il vostro problema

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

è CURRDATE() o CURDATE()? – Sky

+0

@ kj7: Mi spiace, errore di battitura ... –

+0

@Shashi Kant: Grazie .... funziona – Sky

2

MySQL utilizza AAAA-MM-DD di default:

$todaysDate="2012-26-11"; 

dovrebbe essere:

$todaysDate="2012-11-26"; 

ed hai bisogno di virgolette singole attorno ad esso nella query.

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

Avevi bisogno di mettere le virgolette singole intorno alla data modificata: "Ma la sua non funziona"

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