2012-11-26 13 views
11

Tôi đã theo bảng:Kiểm tra nếu ngày hiện nay là giữa hai ngày + mysql select query

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

tôi muốn so sánh ngày todays ở giữa dateStart và dateEnd.

Tiếp theo là truy vấn của tôi cho điều này:

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

Nhưng nó không làm việc. Bất kỳ giải pháp nào. Cảm ơn trước.

+0

Bạn có thể cụ thể hơn không? Lỗi là gì? –

+0

@Mark Byres: Nó trả về 0 hàng. Chỗ trống. – Sky

+0

dateformat của $ todaysDate là gì? –

Trả lời

24

Hãy thử điều này :: này sẽ giải quyết vấn đề của bạn

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

là CURRDATE() hoặc CURDATE()? – Sky

+0

@ kj7: Xin lỗi, nhập sai lầm ... –

+0

@Shashi Kant: Cảm ơn .... hoạt động của nó – Sky

2

MySQL sử dụng định dạng YYYY-MM-DD theo mặc định:

$todaysDate="2012-26-11"; 

nên là:

$todaysDate="2012-11-26"; 

Và bạn cần dấu nháy đơn xung quanh nó trong truy vấn.

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

Bạn cần phải đặt dấu nháy đơn xung quanh ngày thay đổi: "Nhưng nó không làm việc"

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