База данных:
| date_paid (int) |
1535558400
1539532800
Я пытаюсь запросить следующее, но я получаю ошибку синтаксиса SQL для части даты.
$id = $this->input->post('id');
$date = $this->input->post('date');
$this->db->where('id',$id);
$this->db->where('DATE_FORMAT(date_paid, "%Y-%m-%d")',$date);
$query=$this->db->get('payments');
$result=$query->row();
Есть ли способ изменить формат даты столбца date_paid
так что я могу сравнить его с $this->input->post('date')
данные?
Журнал ошибок:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2018-10-30'' at line 4
Я пытаюсь изменить существующее веб-приложение, поэтому, насколько это возможно, я не хочу менять тип данных столбца. date_paid
заранее спасибо
1535558400 выглядит как метка времени UNIX, которая соответствует 29 августа 2018 года 16:00. Вы можете преобразовать его в Y-m-d
следующее:
DATE(FROM_UNIXTIME(1535558400))
Это даст вам 2018-08-29
которую вы можете сравнить с другой строкой даты, имеющей такой же формат.
Пожалуйста, используйте как это
DATE_FORMAT(FROM_UNIXTIME(`date_paid`), '%Y-%m-%d') AS 'date_changed'
Вы можете сослаться Вот
Вам нужно использовать
DATE_FORMAT (FROM_UNIXTIME (date_paid
), «% Y-% m-% d») AS «date_formatted»
так что-то вроде:
$id = $this->input->post('id');
$date = $this->input->post('date');
$this->db->select("DATE_FORMAT(FROM_UNIXTIME(`date_paid`), '%Y-%m-%d') AS date_formatted");
$this->db->from('payments');
$this->db->where("DATE_FORMAT(FROM_UNIXTIME(`date_paid`), '%Y-%m-%d') = " . $date, '', false);
$result = $q->row();
Используйте синтаксис ниже
выберите convert (varchar (4), year (ColumnDate)) + ‘/’ + convert (varchar (4), month (ColumnDate)) + ‘/’ + convert (varchar (4), day (ColumnDate)) из YourTable