我有一个以 DATETIME 格式存储的MySQL日期。所以我想知道如何在我的Doctrine QueryBuilder的date()
子句中使用where
。例如,2013-02-01 12:51:17
是MySQL中的日期。但我只需要检索日期。这就是我的尝试:
$qb = $this->getEntityManager()->createQueryBuilder()
->select('t.balance','a.id','t.date')
->from('TestMainBundle:Transaction','t')
->groupBy('a.id')
->orderBy('a.id')
->where("t.date in date('t.date') ");
return $qb->getQuery()->getResult();
我收到以下错误:
QueryException:[语法错误]:错误:预期的Doctrine \ ORM \ Query \ Lexer :: T_OPEN_PARENTHESIS,得到'日期'
答案 0 :(得分:1)
正如评论中指出的那样,你不能在Doctrine中使用特定于mysql的info( action , user_name, modified_date )
或// both are mapped with TEXT
[DataType(DataType.DateTime)]
[StringLength(100)]
public string basename { get; set; }
public DateTime? requirementdate { get; set; }
函数。
但是对于在日期时间字段中搜索特定日期的特定情况,您可以将日期视为字符串,从而使用date()
运算符
date_format()
截至
但我需要只检索日期
您只需使用LIKE
方法格式化返回的值。即。
->Where('t.date LIKE :date')
->setParameter(':date', "$date%")
答案 1 :(得分:0)
您好您可以使用 SUBSTRING 来修复您的问题
->where('SUBSTRING(t.date, 1, 10) IN (:param)')
->setParameter('param', array('2017-04-06'))
答案 2 :(得分:-1)
你的where子句中不需要“date”。
Juste将其删除:
->where('t.date in (:yourwanteddate)')
->setParameter('yourwanteddate', '2013-02-01 12:51:17');