2015-09-15 43 views
1

我有一些關於yii addBetweenCondition的問題。yii addBetween條件範圍與外部範圍

我用這個代碼

$criteria->addBetweenCondition('date',$this->date1,$this->date2,true); 

讓說$this->date1 = '2015-09-15'$this->date2 = '2015-09-17'

但結果表明,有1517這是16, 之間的日期我想要的記錄是15,16,17。 如何做到這一點在yii。 謝謝 編輯 我忘了說,我用的型號

function search() 
+0

請提供更多信息。你使用哪個數據庫(Postgres,MySQL,...?)。如果可以附加更廣泛的代碼上下文(這將是很好的看到整個搜索方法)。 – Glapa

回答

4

您可以根據您的需求使用此條件。並且始終綁定參數以防止查詢中的sql注入。

$criteria->addCondition('date >= :startDate AND date <= :endDate'); 
$criteria->params = array(':startDate' => $this->date1, ':endDate' => $this->date2); 
0

你可以試試這個:

$criteria->condition = "date >= '$this->date1' AND date <= '$this->date2'"; 

,或者

//use this if you are expecting null in any of $this->date1 or $this->date2 
if ($this->date1 != null) { 
    $criteria->addCondition("date >= :from"); 
    $criteria->params['from']=$this->date1; 
} 
if ($this->date2 != null) { 
    $criteria->addCondition("date <= :to"); 
    $criteria->params['to'] = $this->date2; 
} 

我相信您的date字段有時間com可能是你的addBetweenCondition沒有返回預期結果的原因。

0

兩件事情可能是問題。

  1. 檢查您是否使用了findAll()方法;或者該方法的一些變體以此條件查詢數據庫。
  2. 如果您需要日期1516,並17 ...你可以考慮做你的1418之間尋求日期---這是假設MySQL的BETWEEN並不全面。
+0

根據[文檔](https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#operator_between),它是包容性的。 – Glapa