2011-12-12 267 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出錯