python - 根据时间戳选择并用零更新时间戳

标签 python mongodb datetime mongodb-query pymongo

如何从 MongoDB 集合中时间 (HH:MM:SS.Milisecond) 值大于零的日期字段中选择记录,并使用时间 (HH:MM:SS) 值更新为零保持日期值与 Python 脚本中的现有值相同?

当前数据如下所示 -

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

如何使用 mongodbsql 仅选择第 4、5、6 和 7 行,并在 Python 脚本中将时间戳更新为零?

更新后,数据如下所示 -

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

最佳答案

ISODate() 由 PyMongo 表示为 datetime 对象。 MongoDB 假定日期和时间采用 UTC。有几种方法可以获得给定 UTC 时间的午夜(一天的开始)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

关于python - 根据时间戳选择并用零更新时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33271060/

相关文章:

datetime - 解析短信日期/时间

mongodb - 限制 MongoDB 数据库大小?

python - 如何为 Python repl 着色

python - 快速修复 : how to get Symbol ( flag 55 ) from messages?

python - Sublime text 3.1.1 中的 Pylinter 仍然没有使用 Python2.7

java - Fongo 2.1.0 不适用于 Mongo Java 驱动程序 3.2.8

arrays - 从 mongodb 数组中的所有元素中删除一个字段

python - SQLAlchemy 返回字符串而不是日期时间对象

python - 在不进行转换的情况下按字符串日期对 Pandas 数据框进行排序

python - 添加一个 **kwarg 到一个类