Php 使用mysql日期\格式时获取语法错误

Php 使用mysql日期\格式时获取语法错误,php,mysql,Php,Mysql,对于数据库中的特定日期时间,我使用mysqlDATE\u格式。Mysql查询是: $this->db->select('remarks_date, DATE('remarks_date') AS rem_dateonly, DATE_FORMAT('remarks_date', '%y-%m-%d %h:%i') AS day_hour_mins, DATE_FORMAT('remarks_date', '%y-%m-%d %h') AS day_hour, tbl_complain

对于数据库中的特定日期时间,我使用mysql
DATE\u格式。Mysql查询是:

$this->db->select('remarks_date, DATE('remarks_date') AS rem_dateonly, DATE_FORMAT('remarks_date', '%y-%m-%d %h:%i') AS day_hour_mins, DATE_FORMAT('remarks_date', '%y-%m-%d %h') AS day_hour, tbl_complain_detail.complain_summary, tbl_complain_detail.id, tbl_complain_detail.complain_no, tbl_complain_detail.created_by, escalation_status, tbl_admin_user.first_name, tbl_admin_user.middle_name, tbl_admin_user.last_name');
$this->db->where('tbl_complain_remarks.status', 'Time Extension');
$this->db->where('tbl_complain_detail.status !=', 'Completed');
$this->db->where('tbl_complain_detail.time_extension_status', '1');
$this->db->join('tbl_complain_remarks', 'tbl_complain_remarks.complain_id = tbl_complain_detail.id');
$this->db->join('tbl_admin_user', 'tbl_admin_user.id = tbl_complain_detail.user_id');
$result2 = $this->db->get('tbl_complain_detail')->result();
在这里,我得到了一个错误

PHP解析错误:语法错误,选择行中出现意外的T_字符串

而且它不需要
%
。为什么?


我做错什么了吗?任何帮助/建议都将不胜感激。

您使用带有简单字符串的单引号。对复杂字符串使用双引号

$this->db->select("remarks_date, DATE(remarks_date) AS rem_dateonly, DATE_FORMAT(remarks_date, '%y-%m-%d %h:%i') AS day_hour_mins, DATE_FORMAT(remarks_date, '%y-%m-%d %h') AS day_hour, tbl_complain_detail.complain_summary, tbl_complain_detail.id, tbl_complain_detail.complain_no, tbl_complain_detail.created_by, escalation_status, tbl_admin_user.first_name, tbl_admin_user.middle_name, tbl_admin_user.last_name", false);

Mysql在select查询中指定列时不支持
单引号,因此请使用

DATE(`remarks_date`)

而不是

DATE('marks\u DATE')


您的问题在于表中的别名。要在表中使用别名,请使用``符号。试试这个

SELECT remarks_date AS rem_date_only, DATE_FORMAT(remarks_date, "%Y-%m-%d %H:%i") AS `day_hour_mins`, DATE_FORMAT(remarks_date, "%Y-%m-%d %H") AS `day_hour`, tbl_complain_detail.complain_summary, tbl_complain_detail.id, tbl_complain_detail.complain_no, tbl_complain_detail.created_by, escalation_status, tbl_admin_user.first_name, tbl_admin_user.middle_name, tbl_admin_user.last_name
FROM (`tbl_complain_detail`)
JOIN `tbl_complain_remarks` ON `tbl_complain_remarks`.`complain_id` = `tbl_complain_detail`.`id`
JOIN `tbl_admin_user` ON `tbl_admin_user`.`id` = `tbl_complain_detail`.`user_id`
WHERE `tbl_complain_remarks`.`status` =  'Time Extension'
AND `tbl_complain_detail`.`status` != 'Completed'
AND `tbl_complain_detail`.`time_extension_status` =  '1'

尝试回响查询,这样你就可以看到构建的查询。回响你的查询并显示结果添加日期(EngsSee日期),如果引号意味着它被认为是Strugurura和Manibharathi。我得到了错误,因为您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解使用“:%i)作为day\u hour\u minsOK的正确语法。我改变它。现在检查它。我仍然得到错误作为解析错误:语法错误,意外“%”我根据添加假值作为参数。检查一下now@sammy看我更新的答案。使用日期格式(备注日期,%y-%m-%d%h:%i)
代替日期格式(备注日期,%y-%m-%d%h:%i)
$this->db->select('remarks_date, DATE(`remarks_date`) AS rem_dateonly, DATE_FORMAT(`remarks_date`, "%y-%m-%d %h:%i") AS day_hour_mins, DATE_FORMAT(`remarks_date`, "%y-%m-%d %h") AS day_hour, tbl_complain_detail.complain_summary, tbl_complain_detail.id, tbl_complain_detail.complain_no, tbl_complain_detail.created_by, escalation_status, tbl_admin_user.first_name, tbl_admin_user.middle_name, tbl_admin_user.last_name');
SELECT remarks_date AS rem_date_only, DATE_FORMAT(remarks_date, "%Y-%m-%d %H:%i") AS `day_hour_mins`, DATE_FORMAT(remarks_date, "%Y-%m-%d %H") AS `day_hour`, tbl_complain_detail.complain_summary, tbl_complain_detail.id, tbl_complain_detail.complain_no, tbl_complain_detail.created_by, escalation_status, tbl_admin_user.first_name, tbl_admin_user.middle_name, tbl_admin_user.last_name
FROM (`tbl_complain_detail`)
JOIN `tbl_complain_remarks` ON `tbl_complain_remarks`.`complain_id` = `tbl_complain_detail`.`id`
JOIN `tbl_admin_user` ON `tbl_admin_user`.`id` = `tbl_complain_detail`.`user_id`
WHERE `tbl_complain_remarks`.`status` =  'Time Extension'
AND `tbl_complain_detail`.`status` != 'Completed'
AND `tbl_complain_detail`.`time_extension_status` =  '1'