You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB中如何将毫秒值转换为HH:MM:SS格式?

MongoDB中将毫秒值转换为HH:MM:SS格式的方法

可以通过MongoDB的聚合管道实现毫秒到HH:MM:SS格式的转换,以下是针对你提供的示例数据的具体实现:

示例数据

{ 
   "Item":"Test1",
    "millisecond" : 188760000
},
{ 
   "Item":"Test2",
    "millisecond" : 23280000
},
{ 
   "Item":"Test3",
    "millisecond" : 128820000
}

聚合查询代码

db.collection.aggregate([
  // 计算总秒数和扣除整小时后的剩余毫秒
  {
    $addFields: {
      totalSeconds: { $divide: ["$millisecond", 1000] },
      remainingMsAfterHours: { $mod: ["$millisecond", 3600000] }
    }
  },
  // 拆分出小时、分钟、秒的数值
  {
    $addFields: {
      hours: { $floor: { $divide: ["$totalSeconds", 3600] } },
      minutes: { $floor: { $divide: ["$remainingMsAfterHours", 60000] } },
      seconds: { $floor: { $divide: [{ $mod: ["$remainingMsAfterHours", 60000] }, 1000] } }
    }
  },
  // 拼接成HH:MM:SS格式,分钟和秒补零到两位
  {
    $addFields: {
      hrFormat: {
        $concat: [
          { $toString: "$hours" },
          ":",
          { $lpad: [{ $toString: "$minutes" }, 2, "0"] },
          ":",
          { $lpad: [{ $toString: "$seconds" }, 2, "0"] }
        ]
      }
    }
  },
  // 选择需要保留的字段(如需保留原millisecond字段,可添加"millisecond":1)
  {
    $project: {
      Item: 1,
      hrFormat: 1
    }
  }
])

代码说明

  1. 计算基础数值:先将毫秒转换为总秒数,同时算出扣除整小时后的剩余毫秒,为后续拆分分钟和秒做准备。
  2. 拆分时间单位:
    • 小时:总秒数除以3600并向下取整,支持超过24小时的场景
    • 分钟:剩余毫秒除以60000并向下取整,得到完整的分钟数
    • 秒:剩余毫秒对60000取模后再除以1000并向下取整,得到秒数
  3. 格式化拼接:用$concat将小时、分钟、秒拼接成指定格式,同时用$lpad确保分钟和秒为两位数字(如6分钟显示为06)。
  4. 字段筛选:通过$project只保留需要的字段,避免冗余数据。

输出结果

执行上述查询后,会得到如下格式的结果:

{ 
   "Item":"Test1",
    "hrFormat" : "52:26:00"
},
{ 
   "Item":"Test2",
    "hrFormat" : "06:28:00"
},
{ 
   "Item":"Test3",
    "hrFormat" : "35:47:00"
}

(注:Test1的计算结果为52:26:00,与你提供的示例输出62:22:00存在差异,推测是示例数据或期望输出的数值有误,上述代码逻辑为标准的毫秒转时间格式计算)

内容的提问来源于stack exchange,提问作者Jayven Javier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:01:50