Home > Back-end >  How to get previous day's records in MongodDB?
How to get previous day's records in MongodDB?

Time:02-11

I am using MongoDB which has a time field in milliseconds. I am trying to get all the records for previous day. So far I have searched for solutions which show how to get the records for previous 24 hrs. But I need records for previous day only. Please help to write this query. So something like this

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

But like I explained this is not what I want.

CodePudding user response:

You can get the UNIX timestamps for start and end of previous day this way.
NOTE - start and end in UTC time

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())

CodePudding user response:

We would assume "the previous day" is a 24 hour period starting at the beginning of the day before today. The easiest way to do this is use time based on UTC and add a timezone offset (if needed).

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)

},

CodePudding user response:

Whenever you have to work with date/time arithmetic then I recommend moment.js library:

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

Alternative libraries are luxon and day.js

CodePudding user response:

    var date = new Date();
    
    date ; //# => today date
    
    var yesterdayDate =  date.setDate(date.getDate() - 1);
    
    createdTime: {
       $lt: date,
       $gt: yesterdayDate,
    },
  • Related