В PostgreSQL я использую PersistentDuration
для сопоставления между интервалом типа sql и продолжительностью, но он не работает.
Другой пользователь нашел ту же проблему и пришел со своим классом:
public void nullSafeSet(PreparedStatement statement, Object value, int index)
throws HibernateException, SQLException {
if (value == null) {
statement.setNull(index, Types.OTHER);
} else {
Long interval = ((Long) value).longValue();
Long hours = interval / 3600;
Long minutes = (interval - (hours * 3600)) / 60;
Long secondes = interval - (hours * 3600) - minutes * 60;
statement.setString(index, "'"+ hours +":"
+ intervalFormat.format(minutes) + ":"
+ intervalFormat.format(secondes)+"'");
}
}
Но он не работает с реальным форматом, потому что он допускает, что шаблон интервала "Чч: мм: сс". Это не так: см.
Вот несколько реальных примеров, которые мне нужно проанализировать из базы данных:
1 day 00:29:42 00:29:42 1 week 00:29:42 1 week 2 days 00:29:42 1 month 1 week 2 days 00:29:42 1 year 00:29:42 1 decade 00:29:42
http://www.postgresql.org/docs/current/interactive/datatype-datetime.html
У вас есть чистое решение?