Вопрос

У меня проблема в том, что синтаксис для Dateiff в MySQL отличается от этого в HSQLDB:

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

Диалекты в гибернации обычно решают эти проблемы, однако я не смогу найти способ создания ограничения датиффа для гибернации. Это реальная неприятность, потому что это предотвращает тестирование устройства с базой данных HSQL в памяти, поскольку я должен «жесткодей» формата Dateiff в операторе SQL.

Если у кого-то есть совет по этому вопросу, было бы очень оценено.

Это было полезно?

Решение

Я бы сказал, что самое простое решение состоит в том, чтобы создать свой собственный пользовательский диалект HSQLDB, расширяя существующий диалект HSQLDB. Затем в конструкторе зарегистрируйте функцию для обработки Dateiff (Date1, Date2), чтобы переводиться в Dateiff (интервал, дату1, дату 2), при условии, что интервал будет статическим значением. Что-то вроде этого:

registerFunction( "datediff", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datediff(interval, ?1, ?2)" ) );
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top