查询django中的时间戳字段

时间:2010-05-05 08:58:23

标签: python django django-models django-views

在我的观看中,我的日期格式为s_date=20090106e_date=20100106

模型定义为

     class Activity(models.Model):
          timestamp = models.DateTimeField(auto_now_add=True)

如何查询使用上述信息提交的时间戳。

   Activity.objects.filter(timestamp>=s_date and timestamp<=e_date)

感谢.....

2 个答案:

答案 0 :(得分: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)

享受!

答案 1 :(得分: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对象。其次,您需要使用gtelte方法来形成django查询。