2011-12-12 223 views
-1

我正在尝试在Django应用程序中查找日期时间字段比当前日期时间早的记录。Django日期时间比较

我有这样的事情:(如果有比现在,但今天的日期较旧的记录,不返回他们)

records = Record.objects.filter(my_field__lte=datetime.now()) 

但是,它只找到记录其中的日期比今天更旧

编辑:只是为了澄清。如果该字段设置为12-10-2011的19:59:00,而当前时间是12-10-2011的20:00:00,那么我希望该记录将返回到查询集中。但是,直到查询在第二天运行之后才会实际返回。 (它每隔5分钟在cronscript上运行,并用于发送基于此日期时间字段的电子邮件)

希望清除它。

顺便说一句,我使用的是MySQL

谁能帮助?

任何意见赞赏。

感谢

+0

我几乎不明白你在问什么。我的猜测是这样的:您使用的是DateField并查询“my_field__lt”而不是“my_field__lte”。 – tback

+0

你使用什么存储引擎? – ryanshow

+0

存储引擎与世界有什么关系? –

回答

0

只是测试午夜明天,而不是现在:

now = datetime.now() 
midnight = datetime(now.year, now.month, now.day+1, 0, 0, 0) 

records = Record.objects.filter(my_field__lt=midnight) 

或者你可以使用date.todaytimedelta得到同样的效果:

from datetime import date, timedelta 

tomorrow = date.today() + timedelta(days=1) 
records = Record.objects.filter(my_field__lt=tomorrow) 
+0

这不能回答这个问题。 – ryanshow

+0

他想要比现在更早的记录,但仍然是“今天”。这完美地回答了这个问题。 –

+0

不,他希望现在的记录比当前的日期时间更早(例如,今天下午5点之前的所有记录,但不是今天下午5点之后的记录)。不是今天的所有记录。 – ryanshow

1

在数据库检查,如果你可以看到时间属性,接下来检查您的模型中是否有models.DateTimeField,并且没有模型.DateField出错