【发布时间】:2018-01-31 23:27:16
【问题描述】:
我正在使用 OpenCart 并正在尝试更改此查询。我需要更改它,以便它返回去年(从现在起 1 年)的记录这是我的查询
$query = $this->db->query("SELECT count(*) AS total, channel FROM `" . DB_PREFIX . "order` WHERE customer_id = '" . (int)$customer_id . "' && order_status_id IN(" . implode(",", $implode) . ") AND YEAR(date_added) = YEAR(CURDATE()) GROUP BY channel");
我尝试将其更改为这个,但它没有工作:
$query = $this->db->query("SELECT count(*) AS total, channel FROM `" . DB_PREFIX . "order` WHERE customer_id = '" . (int)$customer_id . "' && order_status_id IN(" . implode(",", $implode) . ") AND date_added BETWEEN CURDATE() - INTERVAL 1 year AND CURDATE()) GROUP BY channel");
【问题讨论】:
-
“没用。”请对此更加清楚。你得到了什么错误?
-
没有错误,只是没有改变结果
-
如果添加额外过滤器后结果没有变化,则所有记录都满足额外条件。
-
@Strawberry sql 代码中 db 前缀和表名之间没有点。
-
顺便说一句,虽然冗长,但像
date_added BETWEEN CONCAT(YEAR(CURDATE()),'-01-01') AND CONCAT(YEAR(CURDATE()),'-12-31')这样的东西可以使用索引,因此有可能提高效率。