在Django中查询时间戳字段
在我的视图中,日期的格式是这样的:s_date=20090106
和 e_date=20100106
模型是这样定义的:
class Activity(models.Model):
timestamp = models.DateTimeField(auto_now_add=True)
我该如何根据以上信息查询时间戳字段呢。
Activity.objects.filter(timestamp>=s_date and timestamp<=e_date)
谢谢.....
2 个回答
2
这里有一种方法:
s_date = datetime.strptime('20090106', '%Y%m%d')
e_date = datetime.strptime('20100106', '%Y%m%d')
Activity.objects.filter(timestamp__gte=s_date, timestamp__lte=e_date)
首先,你需要用 strptime
这个工具把你的字符串日期转换成 Python 的 datetime
对象。然后,你需要使用 gte
和 lte
这两个方法来构建一个 Django 查询。
6
你需要把你的日期转换成一个 datetime.datetime
类的实例。对你来说,最简单的方法是:
import datetime
#
# This creates new instace of `datetime.datetime` from a string according to
# the pattern given as the second argument.
#
start = datetime.datetime.strptime(s_date, '%Y%m%d')
end = datetime.datetime.strptime(e_date, '%Y%m%d')
# And now the query you want. Mind that you cannot use 'and' keyword
# inside .filter() function. Fortunately .filter() automatically ANDs
# all criteria you provide.
Activity.objects.filter(timestamp__gte=start, timestamp__lte=end)
祝你好运!