我有一个存储行程详细信息的行程表。其中一个字段存储日期,类型为 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: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();
}
我可以通过将日、月、年存储在不同的字段中来完成它,但是无论如何都可以按照我所说的方式做到这一点。
尝试这个而不是你的
like
子句:
$this->db->where(array('MONTH(`date`)'=>$q));
尝试使用你可以做的原生sql查询
$month = 02;
$sql = "SELECT MONTH(date) FROM notification where MONTH(date) = ?;";
$query = $this->db->query($sql,array($month));
MySQL 具有诸如月、日和年之类的函数来与日期时间字段一起使用。