向查询添加条件时更改日期格式

时间:2018-12-18 09:07:18

标签: php mysql codeigniter

数据库:

   | 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的数据类型的原因

预先感谢

4 个答案:

答案 0 :(得分:0)

1535558400看起来像UNIX时间戳,对应于2018年8月29日4:00 PM。您可以将其转换为Y-m-d,如下所示:

DATE(FROM_UNIXTIME(1535558400))

这将为您提供2018-08-29,您可以将其与具有相同格式的另一个日期字符串进行比较。

答案 1 :(得分:0)

请这样使用

 DATE_FORMAT(FROM_UNIXTIME(`date_paid`), '%Y-%m-%d') AS 'date_changed'

您可以参考here

答案 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