我想按月份和年份篩選日期時間字段。由於一些未知的原因,當進入月份和年份時,我返回一個空集。Django按月份和年份篩選
型號:
class SomePost(model.Models):
timestamp = models.DateTimeField(auto_now_add=True)
查詢:
p = SomePost.objects.filter(timestamp__year=2014, timestamp__month=1)
我認爲這是值得做的一個月,但我看不出有什麼我做錯了。
編輯
好了,所以我轉換模型DateTimeField字段成的DateField和查詢工作。
生成的SQL是這樣的:
SELECT
`a_post`.`id`,
`a_post`.`title`,
`a_post`.`slug`,
`a_post`.`text`,
`a_post`.`timestamp`,
`a_post`.`published` FROM `a_post`
WHERE EXTRACT(MONTH FROM `a_post`.`timestamp`) = 2
ORDER BY `a_post`.`timestamp` DESC;
但是,當我將它轉換回來成DateTimeField字段的sql是:
SELECT
`a_post`.`id`,
`a_post`.`title`,
`a_post`.`slug`,
`a_post`.`text`,
`a_post`.`timestamp`,
`a_post`.`published` FROM `a_post`
WHERE EXTRACT(MONTH FROM CONVERT_TZ(`a_post`.`timestamp`, 'UTC', UTC)) = 1
ORDER BY `a_post`.`timestamp` DESC
看起來好像conver_tz導致了問題。如果我在查詢返回結果時刪除convert_tz函數。
關於這裏發生了什麼的任何想法?
你肯定有記錄在數據庫中爲年/月的那個組合? –
是我每天都在januaray 2014 – user204088
看看http://stackoverflow.com/questions/1317714/how-can-i-filter-a-date-of-a-datetimefield-in-django - 它應該幫助你: –