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

时间:2013-04-07 03:40:13

标签: mysql codeigniter

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

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

日期比较使用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',这是日期的错误输出(但是字符串的右输出)。

答案 2 :(得分:0)

我不确定这些db方法是如何在codeigniter中实现的 但可能你可以替换;

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