Я использую 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 admin -> Свойства java -> user.timezone = Europe / Belgrade (который 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
Первая дата включает летнее время, вторая - нет.Так очевидно.