@Tokenchik

Как сделать выборку по текущей дате при помощи ActiveRecord в Yii2?

В базе есть поле time типа timestamp, со значениями - 2017-05-01 16:21:01
Как правильно написать запрос на получение записей с time = текущая дата используя ActiveRecord в Yii2?
Как сделать просто на sql я знаю, но ведь наверняка это можно сделать и в ActiveRecord?
Кидайте тапками и тычьте носом в маны, буду признателен есть покажите куда смотреть )
  • Вопрос задан
  • 2181 просмотр
Решения вопроса 4
qonand
@qonand
Software Engineer
MyActiveRecord::find()->where(['time' => time()])->all()
Ответ написан
@BorisKorobkov
Web developer
Если надо только за текущие сутки без учета часов-минут, то
MyActiveRecord::findAll(new Expression('DATE(time) = :current_date', [':current_date' => date('Y-m-d')]));


P.S. RTFM www.yiiframework.com/doc-2.0/guide-db-active-recor... и https://dev.mysql.com/doc/refman/5.7/en/date-and-t...
Ответ написан
Комментировать
@kucheriavij
Record::findAll(['time' => new \Expression("NOW()")]);
Ответ написан
Комментировать
@yiiworld
$where =['DATE(`time`)' => new \yii\db\Expression('CURDATE()')];//текущая дата относительно серверного времени базы данных
// или
$where =['DATE(`time`)' => date('Y-m-d')];//текущая дата относительно серверного времени интерпретатора php
// или
$where =['DATE(`time`)' => '2135-12-25'];//требуемая дата
ModelActiveRecord::find()
            ->where($where)
            ->all();

и если строк в таблице много, то обязательно создайте индекс для поля time
CREATE INDEX idx_tableName_time ON tableName(time);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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