我的数据库中有一个开始日期和结束日期,以及表单字段中的 $date 变量。我现在尝试查询 $date 等于数据库中的开始/结束日期或这两者之间的任何日期的所有行。
这与 daysAsSql 的工作方式文档中描述的内容相反。我不知道如何让它发挥作用。以下行不能用作控制器中的查找条件:
'? BETWEEN ? AND ?' => array($date, 'Item.date_start', 'Item.date_end'),
任何帮助是极大的赞赏。这真让我抓狂。
这是完整的查询和相应的 SQL:
$conditions = array(
'conditions' => array(
'and' => array(
'? BETWEEN ? AND ?' => array($date, 'Item.date_start', 'Item.date_end'),
'Item.title LIKE' => "%$title%",
'Item.status_id =' => '1'
)));
$this->set('items', $this->Item->find('all', $conditions));
WHERE (('2012-10-06' BETWEEN 'Item.date_start' AND 'Item.date_end') AND (`Item`.`title` LIKE '%%') AND (`Item`.`status_id` = 1))
$conditions = array(
'conditions' => array(
'and' => array(
array('Item.date_start <= ' => $date,
'Item.date_end >= ' => $date
),
'Item.title LIKE' => "%$title%",
'Item.status_id =' => '1'
)));
尝试上面的代码并询问它是否不适合您。
Edit:根据 @Aryan 的请求,如果我们必须找到 1 个月内注册的用户:
$start_date = '2013-05-26'; //should be in YYYY-MM-DD format
$this->User->find('all', array('conditions' => array('User.reg_date BETWEEN '.$start_date.' AND DATE_ADD('.$start_date.', INTERVAL 30 DAY)')));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)