select based on timestamp and update timestamp with zero
Question: How do I select records from a date field which has time (HH:MM:SS.Milisecond)
value greater than zero from Mongodb collection and update it with time
(HH:MM:SS) value as zero by keeping date value as same as existing in python
script.

Current data would look like as below -

    
    
    1) "createdDate" : ISODate("2015-10-10T00:00:00Z") 
    2) "createdDate" : ISODate("2015-10-11T00:00:00Z") 
    3) "createdDate" : ISODate("2015-10-12T00:00:00Z") 
    4) "createdDate" : ISODate("2015-10-13T01:04:30.515Z") 
    5) "createdDate" : ISODate("2015-10-14T02:05:50.516Z") 
    6) "createdDate" : ISODate("2015-10-15T03:06:60.517Z") 
    7) "createdDate" : ISODate("2015-10-16T04:07:80.518Z")
    

How to select only rows 4,5,6,7 using mongodbsql and update it with timestamp
as zero in python script -

After update data would look like as below -

    
    
    1) "createdDate" : ISODate("2015-10-10T00:00:00Z")
    2) "createdDate" : ISODate("2015-10-11T00:00:00Z")
    3) "createdDate" : ISODate("2015-10-12T00:00:00Z")
    4) "createdDate" : ISODate("2015-10-13T00:00:00Z")
    5) "createdDate" : ISODate("2015-10-14T00:00:00Z")
    6) "createdDate" : ISODate("2015-10-15T00:00:00Z")
    7) "createdDate" : ISODate("2015-10-16T00:00:00Z")
    


Answer: `ISODate()` is represented as a `datetime` object by PyMongo. MongoDB assumes
that dates and times are in UTC. There are several ways to get midnight (start
of a day) for a given UTC time `d`:

    
    
    >>> from datetime import datetime, time, timedelta
    >>> d = datetime(2015, 10, 13, 1, 4, 30, 515000)
    >>> datetime(d.year, d.month, d.day) # @user3100115' answer
    datetime.datetime(2015, 10, 13, 0, 0)   # 369 ns
    >>> datetime.fromordinal(d.toordinal()) # 451 ns
    datetime.datetime(2015, 10, 13, 0, 0)
    >>> datetime.combine(d, time.min)       # 609 ns
    datetime.datetime(2015, 10, 13, 0, 0)
    >>> d - (d - d.min) % timedelta(days=1) # Python 3
    datetime.datetime(2015, 10, 13, 0, 0)   # 1.87 µs
    >>> datetime(*d.timetuple()[:3])
    datetime.datetime(2015, 10, 13, 0, 0)   # 2.34 µs
    >>> from calendar import timegm
    >>> datetime.utcfromtimestamp((timegm(d.timetuple()) // 86400) * 86400) # POSIX
    datetime.datetime(2015, 10, 13, 0, 0)   # 4.72 µs
    

