@Silverviql

Как убрать время у даты при получение данных из модели бд?

Пробывал в запросе прописать ->select('DATE_FORMAT(date, "%m-%Y") as data')
Выдает ошибку SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `zakaz` WHERE (action <= 0) AND (data >= (CURDATE()-1) AND data < CURDATE()' at line 1

Мне это нужно для группировки даты. Сейчас у меня все выглядит вот так. Получается объединять только если и время тоже совпадает.
5adf23083cf40372464096.png
$Articles = new ActiveDataProvider([
    'query' => \app\models\Zakaz::find()
        ->where('action <= 0') ->andWhere('data >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)'),
    'pagination' => [
        'pageSize' => 20,
    ],
]);


Вывожу таблицу
<?php echo GridView::widget([
        'dataProvider' => $Articles,
        'showFooter' => true,
        'filterModel'=>$searchModel,
        /*'showPageSummary'=>true,*/
        'pjax'=>true,
        'striped'=>true,
        'hover'=>true,
        'panel'=>['type'=>'primary', 'heading'=>'За неделю'],
        'columns' => [
            [
                'attribute'=>'data',
                'width'=>'310px',
                'value'=>function ($model, $key, $index, $widget) {
                    return $model->data;
                },
                'filterType'=>GridView::FILTER_SELECT2,
                'filter'=>ArrayHelper::map(\app\models\Zakaz::find()->orderBy('data')->asArray()->all(), 'id_zakaz', 'data'),
                'filterWidgetOptions'=>[
                    'pluginOptions'=>['allowClear'=>true],
                ],
                'filterInputOptions'=>['placeholder'=>'Any supplier'],
                'group'=>true, // enable grouping
            ],

            [
                'class' => NumberColumn::className(),
                'attribute' => 'fact_oplata',
            ],
        ],
    ]);;?>
  • Вопрос задан
  • 268 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
убирать время у даты стоит не на уровне SQL-запроса а на уровне вывода данных в GridView
...
'columns' => [
    [
        'attribute' => 'date',
        'format' => ['date', 'php:d-m'-y]
]
...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov
Web developer
->select('DATE_FORMAT(date, "%m-%Y") as data')

date - служебное слово. Если это имя поля, то надо `date`

P.S. "data" - это данные, а вовсе не дата
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы