web-dev-qa-db-ja.com

現在の日付が2つの日付とmysql選択クエリの間にあるかどうかを確認します

次の表があります。

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

今日の日付がdateStartdateEndの間にあるかどうかを確認したいと思います。

以下はこれに対する私のクエリです:

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

しかし、これまでのところ、ゼロ行を返すため、機能していません。

16
J.K.A.

これを試してください::これで問題が解決します

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

MySQLはデフォルトでYYYY-MM-DDを使用します。

$todaysDate="2012-26-11";

でなければなりません:

$todaysDate="2012-11-26";

そして、あなたはそれをクエリの中で一重引用符で囲む必要があります。

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

変更された日付を単一引用符で囲む必要がありました:

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

以下の説明に従って{}を削除してみてください。

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