在codeigniter中搜索

时间:2013-02-01 23:19:38

标签: php codeigniter

我有一张旅行表,可存储旅行详情。其中一个字段存储日期,类型为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();
    }

我可以通过在不同的领域存储日,月,年来实现它,但无论如何都要按照我所述的方式来实现它。

2 个答案:

答案 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具有与日期时间字段一起使用的月,日和年等功能。