我正在使用django 2.1和 USE_TZ = True
以及 TIME_ZONE = 'UTC'
.
这是我的模型datetimefield:
create_date = models.DateTimeField(_('date created'), null=True, auto_now_add=True)
我正在尝试根据周数获取当前周结果。我尝试了以下方法:
today = timezone.now()
current_week_num = today.isocalendar()[1]
week_results = MyModel.objects.filter(create_date__week=current_week_num).count()
当数据库中有记录时,它总是返回0。如果我设置 USE_TZ = False
. 我用的是mysql数据库。
你知道吗?
更新:
问题是mysql时区表为空!我不得不运行:mysql\u tzinfo\u to\u sql/usr/share/zoneinfo,问题就解决了!
2条答案
按热度按时间myzjeezk1#
剖面图
Other databases
在https://docs.djangoproject.com/en/2.1/topics/i18n/timezones/#database 如果您的数据库不是postgres,可能会感兴趣。其他后端存储没有时区信息的日期时间。如果您从use_tz=false切换到use_tz=true,则必须将您的数据从本地时间转换为utc—如果您的本地时间有dst,这是不确定的。
li9yvcax2#
我终于发现了问题所在,基本上mysql时区表是空的,需要填写!
运行以下命令后:
问题消失了!