2

I tried to save Python datetime.datetime.now().date() in mongodb using code like:

mytable.insert({'date': datetime.datetime.now().date(),...})

But this gives the following error:

bson.errors.InvalidDocument: Cannot encode object: datetime

As per here, PyMongo doesn't support saving date instance. So we can save datetime.datetime.now() but not datetime.datetime.now().date().

Given this constraint, is it possible to compare datetime.datetime.now().date() with datetime.datetime.now() just to tell if it is today.

mytable.find({"date": is_today ???? how ?})

when it has been inserted as

mytable.insert({"date": datetime.datetime.now()})
bhaskarc
  • 9,269
  • 10
  • 65
  • 86
  • How ?? I tried this in console but it did not work. >>> import datetime >>> a = datetime.datetime.today() >>> b = datetime.datetime.today() >>> a==b returns False when a and b both are on the same day. – bhaskarc Jan 07 '16 at 19:59
  • 1
    The dupe answers the same question. Use `today = datetime.datetime.today(); start = datetime.datetime(year=today.year, month=today.month, day=today.day); end = datetime.datetime(year=today.year, month = today.month, day=today.day) + datetime.timedelta(days=1)` – Adam Smith Jan 07 '16 at 19:59
  • 1
    basically your query becomes `mytable.find({"date": {'$gte': midnight_today, '$lt': midnight_tomorrow}})` – Adam Smith Jan 07 '16 at 20:03
  • You can use `datetime.date.today()` – EVR Jan 07 '16 at 20:13
  • @EVR, nice try I must say but unfortunately this too is not available in pymongo. Thanks anyways for replying. – bhaskarc Jan 07 '16 at 20:18
  • 1
    too bad, I'm afraid you will have to use `datetime.datetime.today()` and `datetime.timedelta(days=1)` then – EVR Jan 07 '16 at 20:20

0 Answers0