在Django中查询时间戳字段

3 投票
2 回答
6296 浏览
提问于 2025-04-15 22:22

在我的视图中,日期的格式是这样的: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 个回答

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 查询。

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)

祝你好运!

撰写回答