带日期范围条件的查询返回空结果
问题描述:
我有一个查询从特定日期范围内的表中读取一些记录。我在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 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'是日期的错误输出(但是字符串的正确输出)。
答
$this->db->where("aa.assign_date <= $date2 AND aa.assign_date >= $date1");
答
我不确定这些数据库方法是如何在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");
然而它返回0条记录! :( – goseo 2013-04-07 03:55:46
$ this-> db-> query()之后,做一个'echo $ this-> db-> lastquery()'。复制并粘贴到mysql客户端,并尝试计算出东西。 – 2013-04-07 04:02:47
调用undefined方法CI_DB_mysql_driver :: lastquery()in ... – goseo 2013-04-07 04:10:32