0

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

使用mysql很容易做到这一点

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

我在教义文档中找不到如何做到这一点,有人可以帮忙吗?

4

4 回答 4

0

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

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

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

这对我很有效

于 2012-06-30T20:12:41.070 回答
0

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

A. 如果您正在编写表格方法:

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();
于 2012-05-29T14:40:37.187 回答
0

永远不要使用 distinct,尽可能使用 group by,如下所示:

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

我认为关于 group by 的教义文档很容易找到。

于 2012-05-26T17:41:11.227 回答
0

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

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

函数 substr(timestamp without time zone integer integer) 不存在

改用:

select('SUBSTRING(CONCAT(offer.date_closed, \'\'), 0, 5)')
于 2013-01-02T22:12:42.513 回答