我已经定义了两个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小时试图找出问题来源,谁可以对此进行调查?
答案 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'