我需要从查询中的日期时间中提取小时和分钟。
在MySQL中,我有它
SELECT id as id, date_format(etadate, '%m/%d/%Y') as etadate, date_format(etadate, '%H') as etahour, date_format(etadate, '%i') as etamin, ...
但是,当我尝试执行类似的查询时,Doctrine无法识别date_format
:
SELECT
cfs.id as cfsid, cfs.etadate as etadate,
date_format(etadate, "%H") as etahour,
date_format(etadate, "%i") as etamin
FROM
CFSBundle:Cfs cfs
答案 0 :(得分:1)
您必须通过创建扩展程序或使用为您添加此扩展名的捆绑包来添加date_format
Doctrine。
要创建自己的扩展程序,请在此处查看示例 - https://github.com/beberlei/DoctrineExtensions/blob/master/lib/DoctrineExtensions/Query/Mysql/DateFormat.php
如何注册扩展程序 - http://symfony.com/doc/current/cookbook/doctrine/custom_dql_functions.html
答案 1 :(得分:0)
DATE_FORMAT
以及其他各种功能未包含在DQL中。因此,您需要使用Doctrine的NativeSQL函数来编写SQL语句或编写用户定义的函数,以便Doctrine在使用DQL编写时识别DATE_FORMAT
,并且可以将其成功转换为SQL。