我使用基于使用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);
答案 0 :(得分:0)
如果您想根据日期公式选择viewers
,并在同一条件下加入users
,则应使用INNER
加入,而不是使用重复条件。< / p>
使用DATE
和 DATE_FORMAT
也没有意义,你只需要其中一个,因为你说数据库中的值存储在{ {1}}格式,如果您只想通过日期部分进行比较,您只需要DATETIME
。
最后,您不能将原始SQL放入DATE()
条目的value
部分,因为这会导致它被转义,并在结果比较中被视为字符串。相反,将SQL作为一个简单的数组值传递,就像你已经为主/外键条件做的那样。
key => value