【问题标题】:Solr DataImportHandler - Oracle Date - Daylight SavingsSolr DataImportHandler - Oracle 日期 - 夏令时
【发布时间】:2012-11-27 17:51:25
【问题描述】:

this questionanswer I added(我的代码可以在那里查看)之后,我可以从我的Oracle DB 中正确检索正确的日期。但是,Solr 似乎根据夏令时转换了它。例如,我在数据库中的一个日期是:

2011-09-30T 00:15:05Z

但是,当插入到 Solr 中时,它看起来像:

2011-09-29T 23:15:05Z

即减去一小时。作为解决方案的一部分,我使用dateValue()oracle.sql.TIMESTAMP 转换为java.sql.Date。当我从 DataImportHandler 的 ScriptTransformer 打印这个值时,它看起来仍然是我想要的格式。因此,我不认为我的转变有什么奇怪的。只有当我从 Solr 检索此文档时,我才能看到它已转换,例如:

<date name="STRT_DT">2011-09-29T23:15:05Z</date>

这让我觉得 Solr 正在考虑夏令时。

有什么方法可以阻止 Solr 转换日期并保持原样?

【问题讨论】:

    标签: java date solr dataimporthandler


    【解决方案1】:

    Solr 以 UTC 格式存储所有 DateField 值。 Solr 将您的值转换为 UTC,而不是夏令时。据我所知,除了创建自己的自定义日期字段类型之外,没有办法改变这种行为。详情请查看DateField API docs

    【讨论】:

    • 感谢您的回复。我应该在问题中提到并非我所有的日期都被转换了。例如,11 月的日期:2012-11-08T 22:59:59Z 在 DB 和 Solr 上是相同的,这让我想到了夏令时。这个日期不会也被转换(因此是 -1 小时)吗?
    • 我不确定。您能否确认它仅影响夏令时期间的日期?
    • 是的,它看起来是,例如:--- 2012-10-28 00:00:00 回到 2012-10-29 00:00:00 没有 --- 2013 -04-01 00:00:00 回去 2013-03-31 00:00:00 不 --- 2013-10-27 00:00:00 回去 2013-10-28 00:00:00 不't --- 这些都是时钟在我的 timezome 中发生变化的时间,即:根据 Solr 管理员,user.timezone = Europe/London。我的数据库没有自动执行此转换,这就是问题所在(即它们不同步)。
    猜你喜欢
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 2012-06-06
    • 2023-04-05
    • 2012-06-01
    • 2019-12-16
    相关资源
    最近更新 更多