2

我的表中有日期字段,但它们包含所有内容 - 日、年和月。我可以编写查询以仅获取月份等于当前月份的记录吗?我可以做这个:

$today = new \DateTime();
$month = $today->format('m');

$cat = $em->getRepository('EMBudgetTrackerBundle:Expense')->find(1);   
$ex_date = $cat->getDate();

并比较 $month 和 $ex_date,但我可以写一些查询吗?像这样的东西:

public function getExpensesByMonth($month)
{
    $q = $this->createQueryBuilder('e');

    $q->select('e')
      ->where('e.date = :date')
      ->setParameter('date', $month);

    return $q->getQuery()->getResult();
}

先感谢您!:)

4

1 回答 1

2

如果您的数据库列是 DateTime 格式,您可以在查询中使用 DateTime 对象。据我所知,您只能查询时间范围。

public function getExpensesByMonth($beginning, $end)
{
    $q = $this->createQueryBuilder('e');

    $q->select('e')
      ->where('e.date > :beginning')
      ->andWhere('e.date < :end')
      ->setParameter('beginning', $beginning)
      ->setParameter('end', $end);

    return $q->getQuery()->getResult();
}
于 2013-01-29T07:43:16.043 回答