2016-02-21 90 views
0

以下是從我的應用程序在GAE上覆制的相關代碼。gqlQuerry比較日期時間對象

today = datetime.datetime.strptime(date_variable, "%d/%m/%Y") 
yesterday = ref_today - datetime.timedelta(days=1) 
tomorrow = ref_today + datetime.timedelta(days=1) 
logging.info('%s : %s : %s', yesterday, today, tomorrow) 
#2016-02-19 00:00:00 : 2016-02-20 00:00:00 : 2016-02-21 00:00:00 

records = db.GqlQuery("SELECT * FROM ProgrammeQueue" 
     " WHERE scheduledFrom < :1 AND scheduledFrom > :2 " 
     " ORDER BY scheduledFrom DESC", 
     tomorrow, yesterday) 

問題陳述: 輸出:預計19/02/2016和20/02/2016 所有記錄:記錄=我在做什麼錯20/02/2016

所有記錄?

回答

0

您查詢狀態:

WHERE scheduledFrom < :tomorrow AND scheduledFrom > :yesterday 

,其中明天和昨天日期時間。時間設置爲00:00:00,因此結果將包含日期19/02/2016,其中時間大於 00:00:00。

也許您的查詢應該重寫爲使用日期對象而不是日期時間對象(取決於您的模型定義)。或者你需要把它改寫成類似這樣:

records = db.GqlQuery("SELECT * FROM ProgrammeQueue" 
     " WHERE scheduledFrom < :1 AND scheduledFrom >= :2 " 
     " ORDER BY scheduledFrom DESC", 
     tomorrow, today) 
+0

感謝格溫先生, –

+0

計算代碼變更昨天=今天datetime.timedelta(微秒= 1)。有效。非常感謝您指出代碼中嚴重的邏輯錯誤。我的模型也保存着未來的數據。 –