Reputation: 2015
I am using mysql DATE_FORMAT
for a specific datetime in database. Mysql Query is:
$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();
Here I am getting error as
PHP Parse error: syntax error, unexpected T_STRING in select line
and also it's not taking %
. Why?
Am I doing something wrong? Any help/suggestions will be appreciated.
Upvotes: 3
Views: 3116
Reputation: 545
Your problem is with the alias in the table. For using alias in the table use `` symbol. Try this one.
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'
Upvotes: 6
Reputation: 4330
You use single quote with simple string. Use double quote for complex string.
$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);
Upvotes: 2
Reputation: 945
Mysql doesn't support '
single quotes when specify column in select query so use this
DATE(`remarks_date`)
OR
DATE(remarks_date)
Instead of
DATE('remarks_date')
$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');
Upvotes: 0