django查找函数bug从日期提取年份和星期

时间:2017-03-03 14:20:48

标签: django

我已经定义了两个django查找函数

@models.DateTimeField.register_lookup
class ExtractYear(Extract):
    lookup_name = 'year'

@models.DateTimeField.register_lookup    
class ExtractWeek(Extract):
    lookup_name = 'week'

我这样称呼它:

propositions = propositions.annotate(week=ExtractWeek('posting_date'), year=ExtractYear('posting_date'))

它给出:2017年,周:52日期为01/01/2017

我有+5小时试图找出问题来源,谁可以对此进行调查?

1 个答案:

答案 0 :(得分:1)

ISO周年编号与今年年初的“常规”编号不同。日期int *toInt(BigInt *p) { int *integer = NULL; integer = calloc(1, sizeof(int)); // do some stuff here to make integer become an int from a passed // struct array of integers return integer; } 位于ISO年2016的ISO第52周。有关详细信息,请参阅ISO week date上的维基百科文章。

您将在2017年第52周获得意外结果,因为2017-01-01会提取日历年,但year会返回ISO周。

您还没有说过您正在使用哪个数据库。在postgres中,您可以使用week获取日期的ISO年份。

isoyear

以下查询将返回iso_year 2016,第52周:

@models.DateTimeField.register_lookup
class ExtractISOYear(Extract):
    lookup_name = 'isoyear'