Ищу диалект-независимый способ вернуть сумму интервалов длительности между двумя полями TIMESTAMP, используя отборный как:Извлечение суммы интервалов в JOOQ
DSL.sum(DSL.timestampDiff(MY_TABLE.START, MY_TABLE.END))
В JOOQ, sum(...)
возвращает Field<BigDecimal>
, Это происходит для работы в HSQLDB, поскольку для INTERVAL используется миллисекундное представление. Однако в PostgreSQL этот запрос падает, поскольку автоматическое преобразование из собственного типа INTERVAL в BigDecimal невозможно.
Теперь я ищу кросс-платформенный способ в JOOQ для преобразования INTERVAL в миллионы секунд, поэтому я могу суммировать эти числа с числовым значением.
Любые предложения? (Или, возможно, есть более элегантный способ решить эту головоломку?)
Я бы не сделал этого ни в одном из моих кодов. Я бы сохранил интервалы, как интервалы, и хотел бы получить интервал. Или выполняйте мои операции в БД, где интервалы значительны и обрабатываются должным образом. Но я понятия не имею, как он использует jooq. Тем не менее, рекомендуется включить его в свой язык. –
@EvanCarroll: Я знаю, что вы имеете в виду, но если вы хотите быть агностиком поставщика баз данных, иногда вам приходится работать с ограничениями/несовместимостью. –
Я действительно искал способ JOOQ обрабатывать интервалы в нейтральной платформе. Для меня это включает как встроенное (SQL) преобразование в количество определенных единиц времени, так и получение результата интервала запроса как некоторого типа интервала (например, Java 8 Duration). @LukasEder: Спасибо, что зарегистрировали эту проблему как ошибку. – Timo