我们正在使用Yii框架并创建了一个搜索表单包括以下的DatePicker widge:MySQL的DateDiff在Where子句中?
<?php echo $form->labelEx($model, 'availability_start_date');?>
<?php
Yii::import('zii.widgets.jui.CJuiDatePicker');
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'name'=>'stattDate',
'options'=>array(
'showAnim'=>'fold',
),
'htmlOptions'=>array(
'style'=>'height:20px;'
)
));
?>
这个小部件需要被用于搜索谁拥有availability_start_date从指定的值+/- 2天的使用者在上面的小部件中。
我们UserController中有如下加入逻辑:
if ($search_frm['availability_start_date']){
$join .= ' LEFT JOIN user_availability_start_date usd on u.id = usd.id';
$where .= 'AND usd.availability_start_date >= '.$search_frm
['availability_start_date'];
}
目前在逻辑WHERE子句只是要求进行匹配,其中availability_start_date大于或等于该控件的值。
如何修改上述WHERE子句以选择widget的值为+/- 2天而不是availability_start_date值的那些记录?
更新:我已经修改了where子句如下:
if ($search_frm['availability_start_date']){
$join .= ' LEFT JOIN user_availability_start_date usd on u.id = usd.id';
$where .= ' AND usd.availability_start_date >= DATE_ADD('.$search_frm.',
INTERVAL -2 DAY)
AND usd.availability_start_date <= DATE_ADD(' .$search_frm.', INTERVAL 2 DAY)';
}
不幸的是,当我测试的逻辑,将返回的记录不符合这一标准。在表单或页面上不会出现错误。
+1的风采吧! – Matt 2012-08-02 18:19:57