sql查询的学说是否有任何等价物?
SELECT something FROM tbl_name
WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;
实体已
/**
* @var \DateTime
* @ORM\Column(type="datetime",nullable=true)
*/
protected $newStatusData;
所以,我需要获得条件
的所有记录"nowDate - newStatusData =< 30 days"
更新
感谢Alok,回答如下:
namespace AppBundle\Entity;
use Doctrine\ORM\EntityRepository;
class QuestRepository extends EntityRepository
{
function getNewQuests(){
$query = $this->getEntityManager()
->createQuery('SELECT q FROM AppBundle:Quest q WHERE DATE_DIFF(CURRENT_DATE() , q.newStatusData) >= 30');
$result = $query->getResult();
return $result;
}
}
答案 0 :(得分:2)
您可能正在寻找DATE_DIFF() DQL功能。它计算给定日期之间的天数差异。
它接受两个日期的参数。
所以你可以查询这样的数据,
<?php
$result=$this->getEntityManager()
->createQuery("SELECT EN from Bundle:EntityName WHERE DATE_DIFF(CURRENT_DATE(),EN.newStatusData)>=30")
->getResult();
?>
CURRENT_DATE()会返回当前日期。