web-dev-qa-db-fra.com

Vérifiez si la date actuelle se situe entre deux dates + mysql select query

J'ai le tableau suivant:

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

Je veux vérifier si la date du jour se situe entre dateStart et dateEnd.

Voici ma requête pour cela:

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

Mais jusqu'à présent, cela ne fonctionne pas car il ne renvoie aucune ligne.

16
J.K.A.

Essayez ceci :: Cela résoudra votre problème

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

MySQL utilise YYYY-MM-DD par défaut:

$todaysDate="2012-26-11";

devrait être:

$todaysDate="2012-11-26";

Et vous avez besoin de guillemets simples dans la requête.

3
pritaeas
$sql = mysql_query("SELECT * FROM register WHERE CURDATE() between reg_start_date and reg_end_date") or die(mysql_error());
0
user2733245

Vous deviez mettre des guillemets simples autour de la date modifiée:

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

Essayez de supprimer le {} comme décrit ci-dessous.

$todaysDate="2012-11-26";//changed date
$sql = mysql_query("SELECT * FROM register WHERE '$todaysDate' between reg_start_date and reg_end_date") or die(mysql_error());
0
Jebaraj Bernad Shaw
$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
Amit Garg