@mix_gorbachev

Как искать в моделях yii2 с использованием DATE_FORMAT?

Добрый день подскажите как в моделях осуществлять поиск по дате?
Нужно чтобы получилось что то такое в sql
SELECT * FROM table
WHERE DATE_FORMAT(date_label,'%y') = 1994

Нужно чтобы модель , примерно так сработала
Model::find()->where(DATE_FORMAT(date_label,'%y'), 1994);

или нужно просто через createCommand делать?
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Потому что не надо так искать год. Ваш запрос ведёт к сканированию всей таблицы, либо, в лучшем случае - к необходимости делать отдельный функциональный индекс по этому выражению.
Сделайте запрос на диапазон
date_label >= '1994-01-01' and date_label < '1995-01-01'


Видимо как-то вот так:
ModelName::find()->where(['between', 'date_label', '1994-01-01', '1995-01-01' ]);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@sashagamzes
Самоучка
Еще можно реализовать поиск так:
ModelName::find()->where(['YEAR(date_label)' => '1994'])->all();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы