数据库:
| 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
我正在尝试修改现有的Web应用程序,这就是为什么我尽可能不希望更改列date_paid
的数据类型的原因
预先感谢
答案 0 :(得分:0)
1535558400看起来像UNIX时间戳,对应于2018年8月29日4:00 PM。您可以将其转换为Y-m-d
,如下所示:
DATE(FROM_UNIXTIME(1535558400))
这将为您提供2018-08-29
,您可以将其与具有相同格式的另一个日期字符串进行比较。
答案 1 :(得分:0)
答案 2 :(得分:0)
您需要使用
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();
答案 3 :(得分:-2)
使用下面的语法
选择convert(varchar(4),year(ColumnDate))+'/'+ convert(varchar(4),month(ColumnDate))+'/'+ convert(varchar(4),day(ColumnDate))从YourTable