выберите дату, где год и месяц между определенным периодом с помощью конструктора запросов Yii

Я хочу выбрать данные из базы данных, где поле даты находится между определенным периодом. Например: с января 2015 года по апрель 2015 года.

$Q1 = Yii::app()->db->createCommand()
                ->select('count(kode_lelang) as totTender')
                ->from('proc_lelang')
                ->where('year(waktu_mulai)='.$year and 'month(waktu_mulai) between 1 and 4')
                ->queryAll();

Но я не думаю, что пишу правильный синтаксис. Итак, пожалуйста, помогите мне.


person dede    schedule 18.12.2015    source источник
comment
Каков результат этого запроса? Как вы думаете, почему синтаксис неверен? Есть ли сообщение об ошибке?   -  person Victor    schedule 18.12.2015
comment
Мне нужно выбрать данные за 4 месяца. Поэтому я выбираю данные за период с января по апрель, май и август, сентябрь и декабрь. И они дают мне тот же результат. Я думаю, что невозможное происходит в моих данных.   -  person dede    schedule 18.12.2015
comment
Как насчет такого случая: декабрь 2015 г. и февраль 2016 г.?   -  person Glapa    schedule 18.12.2015


Ответы (2)


Я думаю, что ошибка в том, что «и» не находится внутри строки:

$Q1 = Yii::app()->db->createCommand()
                ->select('count(kode_lelang) as totTender')
                ->from('proc_lelang')
                ->where('year(waktu_mulai)='{$year}' and month(waktu_mulai) between 1 and 4')
                ->queryAll();
person Victor    schedule 18.12.2015
comment
@Diyah Пожалуйста, подумайте о том, чтобы принять и, возможно, проголосовать за ответ Виктора, если вы нашли его полезным. Это лучший способ сказать спасибо здесь. - person tarleb; 18.12.2015

В операторе where есть неуместная кавычка. Вместо этого проще использовать двойные кавычки и замену переменных.

->where("year(waktu_mulai)={$year} and month(waktu_mulai) between 1 and 4")

Обратите внимание, что это опасно, если пользователь может контролировать содержимое переменной $year, так как это может привести к SQL-инъекциям. Ознакомьтесь с документацией Yii о том, как предотвратить SQL-инъекции.

person tarleb    schedule 18.12.2015