MySQL - 查询月份名称

MySQL - Querying the name of the month

我在我的 Symfony 中写了一个查询 returns 一年中每个月的总金额。但是,当我尝试将它从月份编号转换为月份名称时,它显示

Error: Expected Doctrine\ORM\Query\Lexer::T_CLOSE_PARENTHESIS, got ","

我的代码..

$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 时它会抛出错误..

您需要从Month函数中删除\'%b\'的部分,因为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();

使用

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