我有一张旅行表,可存储旅行详情。其中一个字段存储日期,类型为DATETIME。我按日期创建了一个搜索查询。
$q can be
$q = 2012 when searching for years
$q = 1-12 when searching for months
$q = 1-31 when searching for days
但是在搜索时,比如在tabe中的 02 月,并且有很多行,其中一些是2002-02-13 04:44:48, 2013-02-13 04:44:48, 2013-02-13 02:44:48
等,所有这些行都会显示,因为它们都包含 02 在他们中间。但我的目的是在本月获得 02 的行。我该怎么做以及适当的方式。
function search($q){
$this->db->select('*');
$this->db->from('trips');
$this->db->like('date',$q);
// Execute the query.
$query = $this->db->get();
// Return the results.
return $query->result_array();
}
我可以通过在不同的领域存储日,月,年来实现它,但无论如何都要按照我所述的方式来实现它。
答案 0 :(得分:1)
尝试使用此代码而不是like
子句:
$this->db->where(array('MONTH(`date`)'=>$q));
答案 1 :(得分:0)
尝试使用本机sql查询,你可以做到
$month = 02;
$sql = "SELECT MONTH(date) FROM notification where MONTH(date) = ?;";
$query = $this->db->query($sql,array($month));
MySQL具有与日期时间字段一起使用的月,日和年等功能。