我有一个名为Last Modified At的字段,其值类似于'2016/04/12 20:24:18'。它不是ISO Date,而是通过MongoDb中的java进程存储的普通String值。 我正在尝试编写一个shell脚本来计算'2016/04/12 20:24:18'和'2016/04/12 16:24:18'之间的差异。差异可以是天或小时,也可以是分钟或秒。我尝试了很多东西,包括转换为ISO日期,但它没有成功。有没有一种简单的方法可以找到像Oracle一样。
任何帮助都会受到赞赏吗?
谢谢, 拉姆
答案 0 :(得分:0)
我不确定你打算如何运行shell脚本,但是mongo shell可以解析日期(使用Javascript)并按照你的要求计算两个日期之间的时间。假设我们在things
数据库中有一个文档如下:
{
"_id" : ObjectId("570f1e528163383227ace761"),
"lastModifiedAt" : "2016/04/12 20:24:18"
}
我们可以运行以下脚本来获取文档的lastModifiedDate
与硬编码日期之间的差异,例如2016/04/12 16:24:18
:
db.things.find({}).forEach(function(thing) {
var date1 = new Date(thing.lastModifiedAt);
var date2 = new Date('2016/04/12 16:24:18');
var dateDiff = date1.getTime() - date2.getTime();
printjson({_id:thing._id,lastModifiedAt:thing.lastModifiedAt,dateDiff:dateDiff});
});
这导致:
{
"_id" : ObjectId("570f1e528163383227ace761"),
"lastModifiedAt" : "2016/04/12 20:24:18",
"dateDiff" : 14400000
}
其中dateDiff
是毫秒,14400000 milliseconds = 4 hours
。
如果您提供有关您打算如何打电话的更多信息,以及第二个日期的来源,我很乐意扩展此答案。