首页/数据/NoSQL 速查/ISODate 与时间范围查询
MongoDB99 条

ISODate 与时间范围查询

日期以 UTC 毫秒存储:mongosh 用 ISODate("...Z") 构造,查询区间按 UTC 换算,避免本地时区偏移踩坑。

NoSQL 速查数据更新于 2026-10-12
构造ISODate("2026-10-01T00:00:00Z") / new Date("...")
查询$gte / $lt 组合半开区间
时区存储 UTC,展示时再按本地区域换算

查一天数据

查一天数据
db.orders.find({ ts: { $gte: ISODate("2026-10-01T00:00:00Z"), $lt: ISODate("2026-10-02T00:00:00Z") } })
db.orders.find({ ts: { $gte: new Date("2026-10-01T08:00:00+08:00") } })
字符串与日期类型不互通:把 "2026-10-01" 这样的字符串与日期字段比较不会按预期命中。

易错点

  • 北京时间 10-01 00:00 对应 UTC 09-30T16:00,硬编码字符串查“一天”常差 8 小时

数据来源与参考

  • MongoDB Manual: Dates
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌