2016-06-14 102 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