我有一个查询从一个表中读取某些特定日期范围内的记录。我在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>
答案 0 :(得分:0)
$this->db->where("aa.assign_date <= $date2 AND aa.assign_date >= $date1");
答案 1 :(得分:0)
日期比较使用mysql datediff
和timediff
函数。
$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");