相关问题
Mysql CONVERT_TZ 函数使用及返回NULL解决方案(时区转换问题)参考 https://blog.youkuaiyun.com/AIkiller/article/details/78814984
1.语法
qs = Table.objects
qs = qs.filter(fielda=False, fieldb=False)
qs = dict(qs.values_list('date__month').annotate(cnt=Count('id', distinct=True)))
2.问题,定位
执行上述语句,发现python没有按照月份统计到结果,date__month这个字段的值是None
print(qs)
<QuerySet [(None, 9)]>
print(qs.query)
... # todo
查看queryset的sql语句,发现使用了mysql的 convert_tz的方法,是这个方法的返回值为None导致的问题
3.解决
参考 Mysql CONVERT_TZ 函数使用及返回NULL解决方案(时区转换问题)
在mysql中加入time_zone等4个表,并导入相关的数据,问题解决。再次执行python语句,得到了聚合后的结果,月份值正确展示了
print(qs)
<QuerySet [(5, 9)]>