FitTech
@FitTech

Формат даты при Select в ActiveRecord?

В модели делаю запрос в базу, получаю все данные что нужно и дату в формате 2016-10-02 09:45:25+03.
$query = (new \yii\db\Query())->
                select('cd.date day,
                c.host_id, cd.customer_id')
            ->from('customer_download cd')
            ->leftJoin('customer c', '"c"."id" = "cd"."customer_id"')


Но мне нужно эту дате привести к виду 2016-10-02 09:45:25. В запросе я делал это так:
to_char(cd.date, 'YYYY-MM-dd HH24:MI') as day

Но когда я вставляю этот код в первый запрос to_char(cd.date, 'YYYY-MM-dd HH24:MI') day, то получаю ошибку syntax error at or near "AS"
Как правильно это сделать?
  • Вопрос задан
  • 188 просмотров
Решения вопроса 2
qonand
@qonand
Software Engineer
$query = new \yii\db\Query();
$query ->select([
    'day' => "to_char(cd.date, 'YYYY-MM-dd HH24:MI')",
    'c.host_id', 
    'cd.customer_id'
])
->from('customer_download cd')
->leftJoin('customer c', '"c"."id" = "cd"."customer_id"')
Ответ написан
FitTech
@FitTech Автор вопроса
Есть решение:
1. Нужно читать документацию.
2. Я использую new \yii\db\Query(), значит нужно читать
3. Там сказано: Кроме имён столбцов, вы можете также использовать SQL выражения. Вы должны использовать формат массива для использования выражений, которые содержат запятые для предотвращения некорректного автоматического экранирования

Значит правильно будет:

$query = (new \yii\db\Query())->
                select(["to_char(cd.date,  'YYYY-MM-dd HH24:MI') as day",
                "c.host_id", "cd.customer_id"])
            ->from('customer_download cd')
            ->leftJoin('customer c', '"c"."id" = "cd"."customer_id"')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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