【问题标题】:How to get previous day's records in MongodDB?如何在 MongodB 中获取前一天的记录?
【发布时间】:2022-02-12 22:49:21
【问题描述】:

我正在使用 MongoDB,它有一个以毫秒为单位的时间字段。我正在尝试获取前一天的所有记录。 到目前为止,我已经搜索了显示如何获取前 24 小时记录的解决方案。但我只需要前一天的记录。请帮助编写此查询。 所以像这样的

createdTime: {
     $lt: new Date().getTime(),
     $gt: new Date().getTime() - 1000 * 60 * 60 * 24,
},

但就像我解释的那样,这不是我想要的。

【问题讨论】:

  • 你在找Mongo版本吗?
  • @Gibbs 应该是 4.2.3
  • 为清楚起见,请定义“前一天”?时间不是绝对的,取决于用户的时区,除非我们使用 UTC 标准。
  • @lacostenycoder 是的,我的意思是 UTC,给定的答案应该有效。谢谢。
  • @doctorsherlock 谢谢,但是有些人可能会觉得时区很有用,我已将其包含在下面的答案中。

标签: javascript node.js mongodb mongoose momentjs


【解决方案1】:

每当您必须使用日期/时间算术时,我推荐 moment.js 库:

createdTime: {
   $lt: moment().endOf('day').subtract(1, 'day').toDate(),
   $gte: moment().startOf('day').subtract(1, 'day').toDate()
},

替代库是luxonday.js

【讨论】:

    【解决方案2】:

    您可以通过这种方式获取前一天开始和结束的 UNIX 时间戳。
    注意 - 以 UTC 时间开始和结束

    var start = new Date().setUTCHours(0,0,0,0)-1000 * 60 * 60 * 24;
    var end = new Date().setUTCHours(23,59,59,999)-1000 * 60 * 60 * 24;
    console.log(start)
    console.log(end)
    
    
    console.log(new Date(start).toUTCString())
    console.log(new Date(end).toUTCString())

    【讨论】:

      【解决方案3】:

      我们假设“前一天”是从前一天开始的 24 小时时段。最简单的方法是使用基于 UTC 的时间并添加时区偏移量(如果需要)。

      const timeZoneOffset = -5;
      
      createdTime: {
           $gt: new Date().setUTCHours(0,0,0)-1000 * 60 * 60 * (24 + timeZoneOffset),
           $lt: new Date().setUTCHours(23,59,59,999)-1000 * 60 * 60 * (24 + timeZoneOffset)
      
      },
      

      【讨论】:

        【解决方案4】:
        var date = new Date();
        date ; //# => today date
                
        var yesterdayDate =  date.setDate(date.getDate() - 1);
                
        createdTime: {
            $lt: date,
            $gt: yesterdayDate,
        }
        

        【讨论】:

        • 这不考虑小时数
        • 您的答案可以通过添加有关代码的作用以及它如何帮助 OP 的更多信息来改进。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-22
        • 2010-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多