сравнение метки времени и даты в Дерби

Мне нужно сравнить дату и метку времени в запросе SELECT. Обычно это поддерживается большинством других платформ БД (MySQL, MSSQL, Oracle и т. д.), но в Derby выдает эту ошибку:

Вызвано: java.sql.SQLSyntaxErrorException: сравнения между «DATE» и «TIMESTAMP» не поддерживаются. Типы должны быть сопоставимы. Строковые типы также должны иметь соответствующие параметры сортировки. Если параметры сортировки не совпадают, возможное решение состоит в том, чтобы привести операнды к параметрам сортировки по умолчанию (например, SELECT tablename FROM sys.systables WHERE CAST(tablename AS VARCHAR(128)) = 'T1')

Я не хочу использовать CAST, потому что не могу изменить SQL-запрос. Это ошибка Derby, которая когда-нибудь будет исправлена? В настоящее время я использую Дерби 10.8.2.2.

Спасибо!


person Dan L.    schedule 13.06.2012    source источник


Ответы (2)


Если вы подключаетесь из Java-программы, вы можете получить определенные части метки времени, используя различные методы getxxx() (на самом деле они унаследованы от Java.util.date)

См. документы http://docs.oracle.com/javase/7/docs/api/java/util/Date.html

и проверьте методы getDate(), getDay() getHour()....

person DaveM    schedule 16.08.2012

Возможно, вы можете определить VIEW для одной из таблиц и включить CAST в VIEW. Таким образом, вам не нужно изменять фактический запрос; это будет противоречить точке зрения и, таким образом, включать актерский состав таким образом.

person Bryan Pendleton    schedule 14.06.2012