php - 在codeigniter where class中使用Mysql Interval
问题描述
我在查询中使用了 MySQL 间隔。在原始类型查询中,它工作正常,但在 PHP 样式中,也返回了一些错误的数据。我发现了由于 where 间隔而出现的问题。我尝试了很多,但它无法解决。
数字 1 是我的原始查询(工作正常),数字 2 是我的 CodeIgniter 代码,数字 3 是我对 CodeIgniter 代码的实际查询,
NO:1 SELECT str_to_date(concat(yearweek(s.creationdate), 'tuesday'), '%X%V %W') as week, `b`.`name` as `branchname`, `g`.`name` as `groupname`, `s`.`streetName`, DATE(s.creationdate) as start_date, DATE(s.maturity_date) as maturity_date, (DATE(s.maturity_date) + INTERVAL 4 WEEK) as nippu_date, `customerName`, `s`.`balance` FROM `super_sales` `s` LEFT JOIN `branch` `b` ON `s`.`branchID`=`b`.`id` LEFT JOIN `group` `g` ON `s`.`groupID`=`g`.`id` LEFT JOIN `super_customer` `c` ON `c`.`customerid`=`s`.`customerid` WHERE DATE(c.lastAttendance) > (DATE(s.maturity_date) + INTERVAL 4 WEEK) AND `c`.`balance` <>0 ORDER BY `week` DESC LIMIT 50
NO 2: $this->db->select("str_to_date(concat(yearweek(s.creationdate), 'tuesday'), '%X%V %W') as week,b.name as branchname,g.name as groupname,s.streetName,DATE(s.creationdate) as start_date,DATE(s.maturity_date) as maturity_date,(DATE(s.maturity_date) + INTERVAL 4 WEEK) as nippu_date,customerName,s.balance");
if($parameters['branch']!=NULL){
$this->db->like('s.branchID',$parameters['branch']);
}
// $dat = array('e_date' => ;
// $dat=DATE_ADD(DATE(s.maturity_date) + INTERVAL 4 DAY);
$this->db->where('DATE(c.lastAttendance) >','(DATE(s.maturity_date) + INTERVAL 4 WEEK)');
$this->db->where('c.balance <>',0);
if($parameters['cdatefrom']!=NULL){
$this->db->where('yearweek(s.creationdate)',date('YW',strtotime($parameters['cdatefrom'])));
}
// $this->db->group_by(array("s.branchID", "str_to_date(concat(yearweek(s.creationdate), 'tuesday'), '%X%V %W')"));
if(empty($order_column) || empty($order_type)){
$this->db->order_by('yearweek(s.creationdate)','asc');
}else{
$this->db->order_by($order_column,$order_type);
}
if($limit!=0){
$this->db->limit($limit,$offset);
}
$this->db->join('branch b','s.branchID=b.id ','left');
$this->db->join('group g','s.groupID=g.id ','left');
$this->db->join('super_customer c','c.customerid=s.customerid ','left');
$query = $this->db->get('super_sales s');
echo $this->db->last_query();
if($query->num_rows()>0){
return $query->result_array();
}else{
return FALSE;
}
NO:3 SELECT str_to_date(concat(yearweek(s.creationdate), 'tuesday'), '%X%V %W') as week, `b`.`name` as `branchname`, `g`.`name` as `groupname`, `s`.`streetName`, DATE(s.creationdate) as start_date, DATE(s.maturity_date) as maturity_date, (DATE(s.maturity_date) + INTERVAL 4 WEEK) as nippu_date, `customerName`, `s`.`balance` FROM `super_sales` `s` LEFT JOIN `branch` `b` ON `s`.`branchID`=`b`.`id` LEFT JOIN `group` `g` ON `s`.`groupID`=`g`.`id` LEFT JOIN `super_customer` `c` ON `c`.`customerid`=`s`.`customerid` WHERE DATE(c.lastAttendance) > '(DATE(s.maturity_date) + INTERVAL 4 WEEK)' AND `c`.`balance` <>0 ORDER BY `week` DESC LIMIT 50
如果我删除了 (DATE(s.maturity_date) + INTERVAL 4 WEEK) 覆盖的上单引号,我发现比较 2 个查询存在问题,它工作正常,但我不知道如何?
解决方案
推荐阅读
- c# - 为什么我的 Crystal Report PDF 中的条码在本地查看时可见,但从 Web 服务器查看时不可见?
- c# - 如何在 WPF 中调试外部用户控件
- machine-learning - 在 pytorch 中使用 print() 或 summary() 来查看 Pytorch 模型中的层和权重尺寸时出错
- swagger - 使用 Swagger 时如何保护 /api 路由
- javascript - 通过节点 API 将值从 html 表单传递到另一个(重定向页面)
- angular - 路由时超时。Angular 9 通用 + Firebase
- swiftui - CKShare 和 SwiftUI
- swift - SWIFTUI List 希望在列表中有切换。无法将“MyModel”类型的值转换为预期的参数类型“Binding”
' - oracle - PL/SQL 触发器未按预期评估 IF 条件
- javascript - 如何使用 word-wrap: break-word 计算行数?