2012-08-05 110 views
0

可能重複:
How do you select between two dates with DjangoDjango的查詢集基於比較日期

我有一個包含2個字段的Django模型 - c_datec_int的。由於我在創建查詢方面非常薄弱......是否有一些方法可以從db中僅獲取滿足此條件的記錄:c_date+timedelta(days=c_int)=date.today?我想在數據庫級別上執行它,因爲它比獲取所有記錄和比較所有記錄的日期要快。

+0

不是因爲比較是基於DB的兩個值 – middleofdreams 2012-08-05 10:00:45

回答

1

您應該使用QuerySet.extra來構建複雜的WHERE子句。特別是針對您的要求,您應該檢查您選擇的數據庫的DATEADD函數的可用性。

儘管取決於數據集的大小以及運行此查詢的頻率,另一種選擇是執行遷移並在創建實例時立即計算日期和偏移量的總和 - - 您可以創建自定義ModelForm以繼續允許用戶指定c_int作爲天數的偏移量。

+0

就是這樣!不幸的是,在我的服務器中沒有DATEADD函數,但我使用更簡單的SQL查詢處理它: SELECT * FROM mytable WHERE(c_date + INTERVAL c_int)=「2012-08-02」; – middleofdreams 2012-08-06 05:28:00