在where子句中按月选择记录

时间:2015-03-26 11:32:47

标签: mysql codeigniter

我按月获取数据的查询

$this->db->select('vehicle_make_and_model');
$this->db->join('tukai_drivers','tukai_drivers.driver_id=reqn_challans.dc_driver_id','left');
$this->db->where('dc_challan_date','MONTH(2)');
$this->db->order_by('dc_challan_id','desc');
$result=$this->db->get('reqn_challans')->result();

我正在尝试通过这样的codeignitor

$this->db->where('dc_challan_date','MONTH(2)');

它不起作用?有什么不对

像这样存储日期

http://awesomescreenshot.com/0424q72ne5

2 个答案:

答案 0 :(得分:10)

您需要从

更新where条件
$this->db->where('dc_challan_date','MONTH(2)');

$this->db->where('MONTH(dc_challan_date)','2');

实际功能与MONTH(date)类似,因此您的{1}}是您的专栏名称

答案 1 :(得分:1)

在SQL数据库中,您应 NOT 将函数应用于数据以适应where子句,以便最大化索引的好处(即获得更好的性能)。例如,您可以使用> = with<而不是使用MONTH(dc_challan_date)来获得一个月的数据。例如以下SQL:

select * from table
where dc_challan_date >= '2015-02-01'
and dc_challan_date < '2015-03-01'

数据库优化器可以在该查询中使用列dc_challan_date上的索引。该示例使用“sargable谓词”。