1

我有一个存储旅行详细信息的旅行表。其中一个字段存储日期,类型为 DATETIME 。我正在按日期创建搜索查询。

$q can be
$q = 2012   when searching for years
$q = 1-12   when searching for months
$q = 1-31   when searching for days

但是在搜索时,比如说表格中的02月,并且有很多行,其中一些是 2002-02-13 04:44:48, 2013-02-13 04:44:48, 2013-02-13 02:44:48etc,它们都会显示出来,因为它们都包含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();
    }

我可以通过在不同的字段中存储日、月、年来完成它,但是有没有按照我所说的方式来做。

4

2 回答 2

1

试试这个,而不是你的like条款:

$this->db->where(array('MONTH(`date`)'=>$q));
于 2013-02-02T04:36:49.777 回答
0

尝试使用本机 sql 查询,您可以这样做

$month = 02;
$sql = "SELECT MONTH(date) FROM notification where MONTH(date) = ?;";
$query = $this->db->query($sql,array($month));

MySQL 具有与日期时间字段一起使用的函数,如 、月、日和年。

于 2013-02-02T04:30:39.323 回答