首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从MySQL导入时,如何在solr中保留时区?

问从MySQL导入时,如何在solr中保留时区?
EN

Stack Overflow用户
提问于 2019-04-02 02:00:04
回答 1查看 369关注 0票数 1

我运行的是Solr7.7.x,它从MySQL导入包括日期在内的数据。在数据库中,时间被保存到服务器的当前时区。solr导入后,它会转换为UTC。在我的例子中,当拉取数据时,这会导致移位2小时:

MySQL:

代码语言:javascript
复制
"date_created":"2019-04-01 17:18:45"

MySQL导入查询:

代码语言:javascript
复制
SELECT DATE_FORMAT( c.date_created, '%Y-%m-%dT%H:%i:%sZ' ) AS date_created FROM cls

solr:

代码语言:javascript
复制
"date_created":"2019-04-01T19:18:45Z",

PHP:

代码语言:javascript
复制
date("Y-m-d H:i:s", strtotime($item['date_created']));

我也试过了:

代码语言:javascript
复制
$tz = new DateTimeZone('Europe/Berlin');
$date = new DateTime($classified['date_created']);
$date->setTimezone($tz);
$ad['time_created'][$index] = $date->format('Y-m-d H:i:s');

同样的结果,时间偏移了2个小时。如果我将DateTimeZone更改为US,它将偏移be9h,这表明它至少有一些效果。

我暂时修复了它:$ad['time_created'][$index] = date("Y-m-d H:i:s", strtotime($classified['date_created'])-7200);,这对我来说不是一个好的解决方案。

如何从MySQL中保留时间,以及在solr中处理时区的推荐方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2019-04-07 00:09:54

我不确定这是否能解决你的问题,但是你可以通过给solr分配一个时区来同步solr的时区和MySQL时区,默认情况下solr在UTC时区上工作。

如果Solr在Windows计算机上,请在solr-x.x.x\bin\solr.in.cmd中指定时区,如下所示

代码语言:javascript
复制
set SOLR_TIMEZONE=<yourTimezone>

如果Solr在linux上,则在solr-x.x.x\bin\solr.in.sh中

代码语言:javascript
复制
SOLR_TIMEZONE="<yourTimezone>"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55461058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档