如何在CakePHP中使用DATE和DATE_FORMAT

时间:2015-08-24 06:38:02

标签: php mysql cakephp

我使用基于使用join的两个表中的日期的条件来获取数据。我无法完美地创建查询,它不会根据条件获取数据。保存在数据库中的日期是Y-m-d H:i:s格式。条件是'created_at'应该大于表中的'ts_lastNewHos'。 created_at位于查看器表中,ts_lastNewHos位于users表中。当我通过sql_dump看到查询时,ts_lastNewHos为空。表中列出了这些条件的数据。可能是什么错误。查询如下:

$this->paginate = array(
        'joins' => array(
                array(
                'table' => 'Users',
                'alias' => 'User',
                'type' => 'LEFT',
                'conditions' => array(
                    'Viewer.id = User.hosp_id',
                    'DATE(DATE_FORMAT("Y-m-d H:i:s",`created_at`)) >'=>DATE(DATE_FORMAT("Y-m-d H:i:s",ts_lastNewHos))  
                )
            )
        ),
        'fields' => array('Viewer.id','Viewer.name','Viewer.address1','Viewer.state','Viewer.district','Viewer.pin_code'),
        'limit' => 10,
        'conditions'=>array('DATE(DATE_FORMAT("Y-m-d H:i:s",`Viewer`.`created_at`)) >'=>DATE(DATE_FORMAT("Y-m-d H:i:s",`Users`.`ts_lastNewHos`)))); 

        $Datas = $this->paginate('Viewer');
        $this->set('Datas', $Datas); 

1 个答案:

答案 0 :(得分:0)

如果您想根据日期公式选择viewers,并在同一条件下加入users,则应使用INNER加入,而不是使用重复条件。< / p>

使用DATE DATE_FORMAT也没有意义,你只需要其中一个,因为你说数据库中的值存储在{ {1}}格式,如果您只想通过日期部分进行比较,您只需要DATETIME

最后,您不能将原始SQL放入DATE()条目的value部分,因为这会导致它被转义,并在结果比较中被视为字符串。相反,将SQL作为一个简单的数组值传递,就像你已经为主/外键条件做的那样。

key => value