2016-06-14 100 views
0

使用django/models/views,我試圖從其中一列是日期的數據庫中返回距離今天最近的日期。 (2016年3月25日)從數據庫日期找到最接近的日期時遇到的麻煩

我必須馬上找到爲止的代碼是:

now = datetime.datetime.now().date() 
statement_list = StatementData.objects.filter(date__gt=now()).reverse()[0] 

我得到這個從另一個計算器的問題,但它返回一個錯誤:

datetime.date' object is not callable 

日期的字段名稱是「日期」,我不知道這是否是一個問題。

基本上我想要的是:

SELECT * FROM StatementDate WHERE date = "(this is the date that is closest to today)" 

我也希望下一個最接近的日期到該日期......但我相信我可以,一旦我得到的第一個查詢完成。

看我知道這是可能的重複,但我似乎無法找出其他答案,我不能發表評論,他們弄明白。所以......如果你能指出我確切的回答問題或幫助我在這裏,我會非常感激。

+0

datetime.datetime」對象不是可調用的是什麼現在返回...你需要更多的代碼? –

+0

如何導入'datetime'? –

+0

yes'date'是一種數據類型 - 如果你想要使用這個名字的列,你應該馬克讓戈現在用雙引號 –

回答

0

有你的代碼的幾個問題

now = datetime.datetime.now().date() 
statement_list = StatementData.objects.filter(date__gt=now()).reverse()[0] 
  1. date
  2. 刪除()從第二行
  3. 刪除()你可以只使用.last()代替reverse()[0]
now = datetime.datetime.now().date 
statement_list = StatementData.objects.filter(date__gt=now).last() 

通過添加括號解釋,蟒蛇會認爲你只是試圖調用名爲date方法再後來就now,其中這些,都沒有方法(實際誤差(S)你獲得,可調用)。他們只是對象。

+1

這清除了錯誤,所以謝謝你。但它沒有返回任何結果,所以我現在必須弄清楚。但謝謝你的答案! –

+0

@DenisAngell - 不用擔心,小提示'__gt'可能不是正確的東西使用..(並且它可能不是正確的順序) – Sayse

+0

是的,就像我說我從別人的答案複製它。所以現在我得到一個「預期的字符串或緩衝區」的錯誤...這是因爲日期格式不正確? –

0

你爲什麼不乾脆試試:

select * from StatementDate order by now()-date limit 1 
+0

op是使用django orm,而不是原始postgresql – Sayse