tipo primer poner mes insertar hora fecha dato como actual mysql sql doctrine2 sql-date-functions

poner - primer dia del mes mysql



¿Cómo puedo usar el AÑO(), el MES() y el DÍA() de SQL en Doctrine2? (2)

Quiero realizar una consulta que se vería así en SQL nativo:

SELECT AVG(t.column) AS average_value FROM table t WHERE YEAR(t.timestamp) = 2013 AND MONTH(t.timestamp) = 09 AND DAY(t.timestamp) = 16 AND t.somethingelse LIKE ''somethingelse'' GROUP BY t.somethingelse;

Si estoy tratando de implementar esto en el generador de consultas de Doctrine de esta manera:

$qb = $this->getDoctrine()->createQueryBuilder(); $qb->select(''e.column AS average_value'') ->from(''MyBundle:MyEntity'', ''e'') ->where(''YEAR(e.timestamp) = 2013'') ->andWhere(''MONTH(e.timestamp) = 09'') ->andWhere(''DAY(e.timestamp) = 16'') ->andWhere(''u.somethingelse LIKE somethingelse'') ->groupBy(''somethingelse'');

Me sale la excepción de error

[Error de sintaxis] línea 0, columna 63: Error: Se esperaba una función conocida, se obtuvo ''AÑO''

¿Cómo puedo implementar mi consulta con el generador de consultas de Doctrines?

Notas:

  • Sé sobre el SQL nativo de Doctrine . He intentado esto, pero lleva al problema de que mis tablas de base de datos productivas y de desarrollo tienen nombres diferentes. Quiero trabajar en una base de datos independiente, por lo que esta no es una opción.
  • Aunque quiero trabajar db agnóstico: FYI, estoy usando MySQL.
  • Hay una forma de extender Doctrine para "aprender" las declaraciones de YEAR() etc., por ejemplo, como se ve aquí . Pero estoy buscando una manera de evitar la inclusión de complementos de terceros.

Puedes agregar la extensión Doctrine para que puedas usar la declaración de MySQL YEAR Y MONTH agregando esta configuración si estás en Symfony:

doctrine: orm: dql: string_functions: MONTH: DoctrineExtensions/Query/Mysql/Month YEAR: DoctrineExtensions/Query/Mysql/Year

ahora puede usar las declaraciones MES y AÑO en su DQL o en el generador de consultas.


orocrm/doctrine-extensions parece ser un buen proyecto también

Es compatible con MySQL y PostgreSql . El objetivo es cruzar la base de datos.