我实际上是通过一个mongDB组件使用tLibraryLoad API,因为我发现使用tJavaRow和tJava组件构建复杂的多层次文档比使用MongoDB调色板组件更容易。
我从Oracle读取数据,这些数据是带有零时间戳组件的日期值:例如:
29-6月-08 00.00.00
导入是通过Talend完成的,但是mongo中的记录似乎是前一天。您可以看到,该记录是插入的28-6月-2008年。
从mongoDB中的JSON文档中提取:
"status_date“:ISODate("2008-06-28T23:00:00Z")
几乎就像mongoDB (或者Talend?)将午夜日期视为前一天的尾声,而不是2008年6月29日的开始。
在我的Talend架构中,我也将Oracle列指定为日期类型,并使用DB类型。
任何建议都很感激。
更新1--由于只有一些日期受到影响,这似乎是mongoDB中的DST调整,可能是将显示调整到我的本地时区,因为受影响的日期在夏令时的下半年。
是因为芒果壳的位置而调整日期吗?
由于mongo服务器的位置,所以所有使用mongo的人都会得到相同的日期查询答案。
不同的人在日期上运行不同的mongo查询会根据他们的位置得到不同的结果,他们的DST会在日期中启动吗?你可以想象从2015年11月1日开始,被算作10月31日数字的贡献(在23:00).
我
发布于 2016-01-06 19:11:43
我感觉到你的痛苦--这是从MongoDB本身衍生出来的。
问题在于,默认情况下,MongoDB以UTC格式存储日期。
https://docs.mongodb.org/manual/tutorial/model-time-data/
您可以使用Mongo的上述建议,但在这种情况下,您只是存储日期,而不是时间。我使用了两种解决方案:
..。或者..。
在linux上,您可以看到utc值使用的是什么:
date -u我想您可以将机器上的本地时区更改为UTC时间,看看会发生什么。
就我个人而言,我从来没有遇到过使用第一种方法的问题。它很快,并确保我有我想要的在那里。
发布于 2016-01-06 18:37:31
我认为这是因为您的服务器的时区。尝试从date对象中移除时区,然后将其插入mongodb。
使用moment.js,您可以以这样的方式创建没有时区的日期:
var date = moment.utc("29-JUN-08 00.00.00", 'DD-MM-YYYY h.mm.s').format()https://stackoverflow.com/questions/34639865
复制相似问题