我使用Solr 3.4来索引DataImportHandler从oracle 10数据库中检索的字段。 “DATE”类型的Oracle字段具有以下值:2011-09-20。 “solr.TrieDateField”类型的Solr索引字段的值为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 - &gt; java properties - &gt; 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
第一个日期包括夏令时,第二个日期没有。很明显。