选择DISTINCT年份学说

时间:2012-05-26 17:27:52

标签: symfony1 doctrine

我想使用doctrine从mysql数据库中选择不同年份:

使用mysql

很容易做到这一点
SELECT DISTINCT DATE_FORMAT( year , '%Y') as dates FROM Inscription 

我在学说文档中没有找到如何做到这一点,任何人都可以提供帮助吗?

4 个答案:

答案 0 :(得分:0)

永远不要使用distinct,总是使用group by,如下所示:

  SELECT DATE_FORMAT( year , '%Y') as dates 
    FROM Inscription 
GROUP BY dates

我认为很容易找到关于分组的学说文档。

答案 1 :(得分:0)

SQL语句SELECT DISTINCT DATE_FORMAT( year , '%Y') as dates FROM Inscription可以在Doctrine中编写,如下所示:

:一种。如果您正在编写表格方法:

class InscriptionTable extends Doctrine_Table {
  /* ... */
  public function getDistinctYears()
  {
    return $this->createQuery('I')
           ->select('DISTINCT(DATE_FORMAT( year , '%Y')) years')
           ->setHydrationMode(Doctrine::HYDRATE_ARRAY)
           ->execute();
  }
}

<强> B中。如果您正在编写内联DQL调用:

InscriptionTable::getInstance()->createQuery('I')
                ->select('DISTINCT(DATE_FORMAT( year , '%Y')) years')
                ->setHydrationMode(Doctrine::HYDRATE_ARRAY)
                ->execute();

答案 2 :(得分:0)

如果你想在Doctrine 2中使用它,你可以使用这个扩展名:

指南: http://www.uvd.co.uk/blog/labs/using-mysqls-date_format-in-doctrine-2-0

代码: https://github.com/uvd/Doctrine

它对我很有用

答案 3 :(得分:0)

如果您使用Postgresql,您将收到:

select('SUBSTRING(offer.date_closed, 0, 5)')
  

函数substr(没有时区整数整数的时间戳)没有   存在

改为使用:

select('SUBSTRING(CONCAT(offer.date_closed, \'\'), 0, 5)')