Question

J'ai un problème en ce que la syntaxe pour datediff dans MySQL est différent de celui hsqldb:

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

Les dialectes en veille prolongée généralement résoudre ces problèmes, mais je ne semble pas être en mesure de trouver un moyen de créer une restriction datediff pour mise en veille prolongée. Ceci est une véritable nuisance parce qu'il me empêche de tests unitaires avec une base de données hsql en mémoire que je dois « hardcode » le format de datediff dans une instruction SQL.

Si quelqu'un a des conseils à ce sujet, il serait grandement apprécié.

Était-ce utile?

La solution

Je dirais que la meilleure solution est de créer votre propre dialecte HSQLDB personnalisé, l'extension du dialecte HSQLDB existant. Ensuite, dans le constructeur, une fonction est enregistrée pour traiter datediff (date1, date2) devant être traduite en datediff (intervalle, date1, date2), à condition que l'intervalle serait une valeur statique. Quelque chose comme ceci:

registerFunction( "datediff", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datediff(interval, ?1, ?2)" ) );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top