按日和月分组原则

2022-08-30 19:10:50

我想按生日列出我的用户,所以月份和日期,而不是年份。

我有此查询

SELECT * 
FROM user 
WHERE birthDate IS NOT NULL 
GROUP BY MONTH(birthDate), DAY(birthDate)

但我不知道如何将它与Symfony和Thindom一起使用。我试过了

$result = $em->getRepository("AcmeApplicationBundle:SecurityServiceUser")
            ->createQueryBuilder('user')
            ->where('user.birthDate IS NOT NULL')
            ->groupBy('MONTH(user.birthDate), DAY(user.birthDate)')
            ->getQuery()
            ->getResult(); 

$result = $em->getRepository("AcmeApplicationBundle:SecurityServiceUser")
            ->createQueryBuilder('user')
            ->where('user.birthDate IS NOT NULL')
            ->groupBy('MONTH(user.birthDate)')
            ->groupBy('DAY(user.birthDate)')
            ->getQuery()
            ->getResult(); 

但在这两种情况下,我都有一个错误

[语义错误] 第 0 行,第 165 列,靠近“MONTH(birthDate)”:错误:无法按未定义的标识或结果变量进行分组。


答案 1

您尚未为值设置别名。这是一个更新的版本:

   $result = $em->getRepository("AcmeApplicationBundle:SecurityServiceUser")
        ->createQueryBuilder('user')
        ->select(' user.username, MONTH(user.birthDate) AS gBmonth, DAY(user.birthDate) AS gBday')
        ->where('user.birthDate IS NOT NULL')
        ->groupBy('gBmonth')
        ->addGroupBy('gBday')
        ->getQuery()
        ->getResult(); 

这应该可以正常工作。


答案 2

您可以使用以下选项之一:

format(as.Date,) 

strftime(source, format)

推荐