带日期范围条件的查询返回空结果

问题描述:

我有一个查询从特定日期范围内的表中读取一些记录。我在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'返回空!

日期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

$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

我不确定这些数据库方法是如何在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");