Как использовать DATE_FORMAT в MS- SQL с использованием DQL / Query Builder - PullRequest
0 голосов
/ 09 января 2020

Я использую doctrine 2,6, Symfony 3,4, MS- SQL. Используя построитель запросов, я получаю столбец даты как объект DateTime от построителя запросов, но мне нужен мой столбец в формате "ymd". Я пытался Doctrine построитель запросов DATE_FORMAT не работает Но это не помогает. Мой конструктор запросов выглядит как `

             $result
            ->select("DATE_FORMAT(p.createdAt, '%Y-%m-%d')")
            ->innerJoin('p.storeid', 'o')
            ->innerJoin('p.warehouseid', 'r')
            ->getQuery()
            ->execute();` 

. Любая помощь будет высоко оценена. Заранее спасибо.

1 Ответ

1 голос
/ 09 января 2020

Используйте это

select CONVERT(varchar(12),getdate(),105)

CAST и CONVERT (Transact- SQL)

Запрос

    SELECT FORMAT(p.createdAt, '%Y-%m-%d')

FROM YourTable 

SELECT FORMAT (getdate(), 'MM.dd.yy') as date

https://www.mssqltips.com/sqlservertip/2655/format-sql-server-dates-with-format-function/

ОБНОВЛЕНИЕ : должно быть что-то вроде этого в вашем случае

$results = DB::table('YOUR_TABLE as p')
     ->where('p.id',$id)
     ->select(DB::raw('DATE_FORMAT(p.createdAt, "%Y-%m-%d") as formatted_date')
     ->first();
echo $results->formatted_date->format('d-m-Y');

ИЛИ Так:

$results = DB::table('Your_Table as p')
    ->where('p.id',$id)
    ->select("p.*","p.p_date as dob")
    ->first();
echo $results->dob->format('d-m-Y');

Вам необходимо установить параметры для queryBuilder следующим образом:

->setParameter('date', $symfonyDateTime->format('Y-m-d'));

СМОТРИ ЗДЕСЬ: https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/query-builder.html

Laravel дает возможность определить Accessors / мутаторов. Что вы можете использовать в этом случае, а не делать это с помощью запросов. почти так же, как Symfony, вы можете попробовать что-то подобное.

ЗДЕСЬ Аксессоры и мутаторы

метод в классе модели клиента

public function getCustDobAttribute($value) {
    return //Format the value Which represent the value in database;
}
...