2015-12-27 10 views
1

Я хочу выбрать данные из базы данных с помощью Yii Framework. Мой запрос нижевыбор данных зависит от даты в MySQL

$sql = Yii::app()->db->createCommand() 
      ->select('a.status, b.date') 
      ->from('check as b') 
      ->join('patient as a', 'a.noRM = b.noRM') 
      ->join('test_result as c', 'b.ID = c.ID') 
      ->where('b.date between '.$start_date.' and '.$end_date) 
      ->queryAll(); 

Я думаю, что есть некоторые проблемы с ним, потому что он дает мне нуль (array()={}), а в базе данных есть данные, где поле даты между $start_date и $end_date. Если изменить синтаксис без пункта, где, Так что мой синтаксис стал:

$sql = Yii::app()->db->createCommand() 
      ->select('a.status, b.date') 
      ->from('check as b') 
      ->join('patient as a', 'a.noRM = b.noRM') 
      ->join('test_result as c', 'b.ID = c.ID') 
      ->queryAll(); 

Результат, правда, ничего с этим проблем. Или я поменяю синтаксис:

$sql = Yii::app()->db->createCommand() 
      ->select('a.status, b.date') 
      ->from('check as b') 
      ->join('patient as a', 'a.noRM = b.noRM') 
      ->join('test_result as c', 'b.ID = c.ID') 
      ->where('b.noRM = '.$noRM) 
      ->queryAll(); 

Результат также верен. Поэтому я думаю, что есть некоторые проблемы, когда я выбираю данные, зависит от даты.

ответ

1

Ваша проблема в первоначальном запросе SQL была с отсутствующими квотами ' для дат в ->where()

->where('b.date between '.$start_date.' and '.$end_date) // Wrong 

вы должны заключить каждую дату в 'date' как этот

->where("b.date between '".$start_date."' and '".$end_date."'") // Correct 

так в вашем окончательном SQL запроса он будет вид WHERE b.date between '2015-12-1' and '2015-12-27'

+0

Ты прав. Это проблема. благодаря – dede

1
Try This:- 

$criteria = new CDbCriteria; 
$criteria->addBetweenCondition('attributeName', 'value1', 'value2'); 
$user = Users::model()->findAll($criteria); 
Смежные вопросы