Сравнение даты в Oracle нарушено из-за летнего времени

Мы отлаживали проблему с SQL-запросом, выполняемым с сервера приложений, работающего на Java через Hibernate. Ошибка:

[3/10/14 10:52:07:143 EDT] 0000a984 JDBCException W org.hibernate.util.JDBCExceptionReporter logExceptions SQL Error: 1878, SQLState: 22008
[3/10/14 10:52:07:144 EDT] 0000a984 JDBCException E org.hibernate.util.JDBCExceptionReporter logExceptions ORA-01878: specified field not found in datetime or interval

Мы смогли сузить это до простого SQL ниже.

select * 
from MY_TABLE T
where T.MY_TIMESTAMP >= (CURRENT_TIMESTAMP - interval '1' hour );

Когда мы запускаем это в той же базе данных, мы получаем ошибку:

ORA-01878: specified field not found in datetime or interval
01878. 00000 -  "specified field not found in datetime or interval"
*Cause:    The specified field was not found in the datetime or interval.
*Action:   Make sure that the specified field is in the datetime or interval.

MY_TIMESTAMP столбец определяется какTIMESTAMP(6).

FWIW, если мы изменим сравнение в SQL выше>= в<=запрос работает.

Мы предполагаем, что это как-то связано с изменением времени (мы в Америке / New_York), но у нас возникают проблемы, когда мы пытаемся выяснить, куда идти с нашей отладкой.

Кроме того, мы видели эту проблему с похожим запросом, который выполняется через MyBatis, и ошибка выглядит так:

### Error querying database.  Cause: java.sql.SQLException: ORA-01878: specified field not found in datetime or interval

### The error may involve defaultParameterMap
### The error occurred while setting parameters
### Cause: java.sql.SQLException: ORA-01878: specified field not found in datetime or interval

ОБНОВЛЕНИЕ: Товарищ по команде Windows изменил свои настройки даты и времени в Windows, сняв флажок «Автоматически настраивать часы на летнее время», а затем открыл новый экземпляр SQLDeveloper. Второй экземпляр может выполнить запрос без каких-либо проблем, но первый (со старой настройкой DST) все еще не работает.

Ответы на вопрос(2)

Ваш ответ на вопрос