2013-04-07 134 views
1

我有一個查詢從特定日期範圍內的表中讀取一些記錄。我在codeigniter框架下使用PHP,查詢非常簡單。帶日期範圍條件的查詢返回空結果

$this->db->select('aa.code,aa.employee_code ,aa.assign_date,aa.asset_serial_no'); 
$this->db->from('asset_assigns as aa'); 
$this->db->where("aa.assign_date >= $date1"); 

上面的工作正常!

$this->db->select('aa.code,aa.employee_code ,aa.assign_date,aa.asset_serial_no'); 
$this->db->from('asset_assigns as aa'); 
$this->db->where("aa.assign_date <= $date2"); 

以上也讀取適當數量的查詢!

$this->db->select('aa.code,aa.employee_code ,aa.assign_date,aa.asset_serial_no'); 
$this->db->from('asset_assigns as aa'); 
$this->db->where("aa.assign_date <= $date2"); 
$this->db->where("aa.assign_date >= $date1"); 

但是,這兩個'where'返回空!

回答

0

日期comparisions使用mysql datedifftimediff功能。

$this->db->where("datediff(aa.assign_date,$date2) <= 0 and datediff(aa.assign_date,$date1) >= 0"); 

如果您不明確,日期將作爲字符串進行比較。考慮兩個查詢:

select date('2010/10/01') > date('2010/2/15'); 

與日期比較你「1」,第一次約會的正確輸出比第二次約會時,而:

select '2010/10/01' > '2010/2/15'; 

與字符串比較,你會得到'0'是日期的錯誤輸出(但是字符串的正確輸出)。

+0

然而它返回0條記錄! :( – goseo 2013-04-07 03:55:46

+0

$ this-> db-> query()之後,做一個'echo $ this-> db-> lastquery()'。複製並粘貼到mysql客戶端,並嘗試計算出東西。 – 2013-04-07 04:02:47

+0

調用undefined方法CI_DB_mysql_driver :: lastquery()in ... – goseo 2013-04-07 04:10:32

0
$this->db->where("aa.assign_date <= $date2 AND aa.assign_date >= $date1"); 
+0

然而,它返回0的記錄! – goseo 2013-04-07 03:47:05

+0

你在哪裏設置了$ date1和$ date2? – Amir 2013-04-07 03:53:30

+0

我已經在查詢之前回復了日期,並且他們顯示了我想要的日期,並且在該範圍內有很多記錄,我確定:function sbrns($ date1,$ date2){echo $ date1。「 - 」。$ date2 ; ... – goseo 2013-04-07 03:57:11

0

我不確定這些數據庫方法是如何在codeignitor 中實現的,但可能可以替換;

$this->db->where("aa.assign_date <= $date2"); 
$this->db->where("aa.assign_date >= $date1"); 

$this->db->where("aa.assign_date <= $date2 AND aa.assign_date >= $date1");