Pregunta

Tengo un problema en el que la sintaxis para datediff en MySQL es diferente de la de hsqldb:

mysql: datediff(date1,date2)
hsqldb: datediff(interval,date1,date2)

Los dialectos en hibernación generalmente se resuelven estos problemas, sin embargo, no parecen ser capaces de encontrar una manera de crear una restricción datediff de hibernación. Esta es una verdadera molestia, ya que me impide la unidad de pruebas con una base de datos en memoria hsql ya que tengo que 'hardcode' el formato de datediff en una instrucción SQL.

Si alguien tiene un consejo sobre este asunto sería muy apreciada.

¿Fue útil?

Solución

Yo diría que la solución más fácil es crear su propia HSQLDB dialecto, extendiendo el dialecto HSQLDB existente. Luego, en el constructor, registrar una función para manejar datediff (fecha1, fecha2) que traducirse en datediff (intervalo, fecha1, fecha2), siempre que el intervalo sería un valor estático. Algo como esto:

registerFunction( "datediff", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datediff(interval, ?1, ?2)" ) );
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top