首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django按日期时间过滤month__gte不起作用

问Django按日期时间过滤month__gte不起作用
EN

Stack Overflow用户
提问于 2020-03-13 08:00:15
回答 3查看 2.4K关注 0票数 1

我使用的是Django 2.2

我有一个created字段,DateTime类型。

我使用下面的命令来过滤大于特定日期的记录

代码语言:javascript
复制
q.filter(created__year__gte=2020, created__month__gte=3, created__day__gte=1)

在我的数据库中,有3月(3个)月和更多月份的记录,但2月(2)没有记录。

当执行上述命令时,它会给出大于3月1日的查询集数据列表。但是当我使用以下命令时

代码语言:javascript
复制
q.filter(created__year__gte=2020, created__month__gte=2, created__day__gte=28)

如果月份为2月(2),则不提供任何数据,查询集为空白。

使用datetime对象会产生错误

代码语言:javascript
复制
received a naive datetime (2020-03-01 00:00:00) while time zone support is active

为什么筛选器不能使用gte,即使月份小于3

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-03-25 06:51:38

错误不是Django设置,而是由于缺少时区数据而导致的MySQL配置错误。

检查此答案以了解如何解决此错误。

https://stackoverflow.com/a/60844090/3719167

票数 0
EN

Stack Overflow用户

发布于 2020-03-13 08:41:25

你为什么要这样过滤?在你的情况下,这是完全不必要的。严格按日期过滤

代码语言:javascript
复制
q.filter(created__gte=datetime.datetime(2020, 3, 1))
票数 2
EN

Stack Overflow用户

发布于 2020-03-13 09:34:55

使用:

代码语言:javascript
复制
q.filter(created__date__gte=datetime.date(2020, 3, 1))

关于过滤器,它在月< 3的时候工作得很好,但是如果指定这一天> 28,那么它已经将结果集缩小到每个月29至31天之间的数据,而不仅仅是2月,而且很可能不是您想要的数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60666809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档