Solr DataImportHandler неверная дата Oracle в индексе

#oracle #solr #indexing #timezone #dataimporthandler

#Oracle #solr #индексирование #Часовой пояс #dataimporthandler

Вопрос:

Я использую Solr 3.4 для индексирования поля, полученного из базы данных Oracle 10 с помощью DataImportHandler. Поле Oracle типа «ДАТА» имеет значение: 2011-09-20. Поле индекса Solr типа «solr.TrieDateField» имеет значение 2011-09-19T22:00:00Z. Мой часовой пояс (oracle, solr, Windows) равен GMT 1. Я ожидал, что значение поля индекса solr: 2011-09-19T23:00:00Z. Почему это не так?

Конфигурация:

 <dataConfig>
    <dataSource driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:***" user="" password="" />
    <document>
        <entity name="event" query="select start_date from event" >
        </entity>
    </document>
</dataConfig>
  

Я использую ojdbc14 версии 11.2.0.2

Администратор Solr -> свойства java -> пользователь.часовой пояс = Европа / Белград (который равен GMT 1)

После исследования я нашел возможную причину:

 select DBTIMEZONE, SESSIONTIMEZONE from dual;
1.  2:00  01:00
  

Использует ли solr dbtimezone вместо sessiontimezone?

Я нашел ответ:

 SELECT FROM_TZ(timestamp '2011-08-20 00:00:00', 'CET') AT TIME ZONE 'GMT' from dual;
11/08/19 22:00:00,000000000 GMT
SELECT FROM_TZ(timestamp '2011-12-20 00:00:00', 'CET') AT TIME ZONE 'GMT' from dual;
11/12/19 23:00:00,000000000 GMT
  

Первая дата включает летнее время, вторая — нет. Это очевидно.

Комментарии:

1. Вы нашли решение для решения этой проблемы?