1

我正在使用 Codeigniter Active Record 类尝试获取数据类型为 DATE 的列的月份和年份部分

$this->db->where('mo', 'MONTH(so_date)');
$this->db->where('yr', 'YEAR(so_date)');

上面的代码给了我这个。MONTH() 和 YEAR() 用单引号括起来。

SELECT *
FROM mytbl 
WHERE `mo` = 'MONTH(so_date)'
AND `yr` = 'YEAR(so_date)'

//so_date looks like this : 2013-04-15

我在这里做错了什么或者我要改变什么以免得到引号?当我删除引号并尝试在 PHPMYADMIN 中运行它时,查询给出了我想要的。

4

2 回答 2

1
$this->db->where('mo = MONTH(so_date)');
于 2013-04-15T09:23:37.587 回答
1

来自文档

$this->db->where()接受可选的第三个参数。

如果您将其设置为 FALSE,CodeIgniter 将不会尝试使用反引号保护您的字段或表名称。

$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE);

所以做类似的事情:

$this->db->where('mo', 'MONTH(so_date)' , FALSE);
于 2013-04-15T09:16:52.440 回答