MySQL-查询月份名称

时间:2018-11-26 10:47:13

标签: php mysql dql

我在Symfony中编写了一个查询,该查询返回一年中每月每个月的总金额。但是,当我尝试将其从月份编号转换为月份名称时,它会抛出

  

错误:预期的学说\ ORM \ Query \ Lexer :: T_CLOSE_PARENTHESIS,得到了“,”

我的代码。

$resultYearly = $this->getTransactionRepository()
        ->createQueryBuilder('p')
       ->select('MONTH(p.transactionDate, \'%b\') AS MonthOfYear, sum(p.amount) Total')
MonthAndYear, sum(p.amount) Total')
            ->where('p.transactionDate >= :end')
            ->setParameter('end', new \DateTime('-1 year'))
            ->groupBy( 'MonthOfYear')
            ->getQuery()
            ->getArrayResult();

它与DATE_FORMAT完美配合,但是当我使用MONTH时会引发错误。

2 个答案:

答案 0 :(得分:1)

您需要从\'%b\'函数中删除Month的一部分,因为MONTH函数仅采用一个参数,即日期。 因此您的代码应为:

$resultYearly = $this->getTransactionRepository()
        ->createQueryBuilder('p')
       ->select('MONTH(p.transactionDate) AS MonthOfYear, sum(p.amount) Total')
MonthAndYear, sum(p.amount) Total')
            ->where('p.transactionDate >= :end')
            ->setParameter('end', new \DateTime('-1 year'))
            ->groupBy( 'MonthOfYear')
            ->getQuery()
            ->getArrayResult();

答案 1 :(得分:0)

使用

DATE_FORMAT(p.transactionDate,'%b')  AS MonthOfYear