1

我使用 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 -> java properties -> 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

第一个日期包括夏令时,第二个日期不包括。如此明显。

4

0 回答 0