我实际上需要一个类似 mysql 的查询
SELECT *, CONCAT(pri_hours, ':', pri_minutes, ' ', IF(pri_ampm = 1, 'am', 'pm')) as hr FROM (`sms_primary`) ORDER BY STR_TO_DATE(hr, '%h:%i %p')
当我使用 codeigniter 时,我编写了如下查询
$this->db->select("*,CONCAT(pri_hours,':', pri_minutes,' ',IF(pri_ampm = 1,'am','pm')) as hr",FALSE);
$this->db->from('sms_primary');
$this->db->order_by("STR_TO_DATE(hr,'%h:%i %p')");
但我没有得到预期的查询,我得到的如下所示
SELECT *, CONCAT(pri_hours, ':', pri_minutes, ' ', IF(pri_ampm = 1, 'am', 'pm')) as hr FROM (`sms_primary`) ORDER BY STR_TO_DATE(hr, `'%h:%i` %p')
我希望您能找出生成的查询中的差异。它注入(inject)了一些不需要的运算符`。我只想删除它。如何删除?
改变
STR_TO_DATE(hr, `'%h:%i` %p')
到
STR_TO_DATE(hr, '%h:%i %p')
最佳答案
codeigniter 正在添加反引号。在查询之前使用它
$this->db->_protect_identifiers=false;
希望对你有帮助
关于php - Codeigniter 按时间排序 - 查询生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29316318/