繁体   English   中英

Codeigniter模型中的MySQL日期格式

[英]Mysql date format in codeigniter model

我在Codeigniter模型中将这种语法用于日期格式

 $this->db->where(DATE_FORMAT(`RD`.`CREATED_TS =`,'%Y-%m-%d'), $from);
 $this->db->where(DATE_FORMAT(`RD`.`CREATED_TS =`,'%Y-%m-%d'), $to);

但它返回此错误

Message: date_format() expects parameter 1 to be DateTimeInterface, string given

当执行查询时,查询返回如下CREATED_TS,由0表示,我如何为CREATED_TS分配名称

SELECT `EP`.`EMPLOYEE_ID`, `EP`.`EMPLOYEENAME`, `RD`.`RETAILER_CODE`, `RD`.`RETAILER_NAME`, `RD`.`AREA_NAME`, `RD`.`LOCALITY`, `RD`.`DISTRICT`, `RD`.`STATE`, `RD`.`PINCODE`, `RD`.`MOBILE_NUMBER`, `P`.`PATCH`, `RD`.`CREATED_TS` FROM `PATIENT_PRIMARY` `P` LEFT JOIN `RETAILER_DETAILS` `RD` ON `P`.`PATIENT_CODE` = `RD`.`PATIENT_CODE` LEFT JOIN `HHCL_EMPLOYEEMASTER`.`EMPLOYEE_PRIMARY` `EP` ON `P`.`CREATED_BY` = `EP`.`EMPLOYEE_ID` WHERE `P`.`CREATED_BY` NOT IN(7777) AND `RD`.`MOBILE_NUMBER` NOT IN(8985180306) AND 0 IS NULL AND 0 IS NULL

使用DATE_CREATE格式化字符串日期将解决此问题

 $this->db->where(DATE_FORMAT(DATE_CREATE(`RD`.`CREATED_TS`), 'Y-m-d'), $from);
 $this->db->where(DATE_FORMAT(DATE_CREATE(`RD`.`CREATED_TS`), 'Y-m-d'), $to);

注意:这将在其中生成= ,如果您想使用BETWEEN ,则应相应地>=<=


编辑01

$this->db->where("DATE(RD.CREATED_TS)", DATE_FORMAT(DATE_CREATE($from), 'Y-m-d'));
$this->db->where("DATE(RD.CREATED_TS)", DATE_FORMAT(DATE_CREATE($to), 'Y-m-d'));

您应该使用as声明RD.CREATED_TS 并在DATE_FORMAT()函数中使用它们。

您应该这样做:

$this->db->select("RD.CREATED_TS as created_ts");
$this->db->where(DATE_FORMAT('created_ts','%Y-%m-%d'), $from);
$this->db->where(DATE_FORMAT('created_ts','%Y-%m-%d'), $to);

如果我错了,请发表评论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM