django mysql 时区_Django与MySQL的时区问题

在用MySQL做数据库,且django设置USE_TZ=True时,会遇到一个问题,就是按月份或日期筛选model数据时只能得到空集,如下。这个问题最粗暴的解决办法是设置USE_TZ=False,但这样做也就无法使用django的时区功能了。

>>> Article.objects.filter(pub_date__month=2)

SELECT `blog_article`.`id`, `blog_article`.`title`, `blog_article`.`cover`, `blog_article`.`content`, `blog_article`.`pub_date`, `blog_article`.`author_id`, `blog_article`.`category_id`, `blog_article`.`views` FROM `blog_article` WHERE EXTRACT(MONTH FROM CONVERT_TZ(`blog_article`.`pub_date`, 'UTC', 'Asia/Shanghai')) = 2 ORDER BY `blog_article`.`pub_date` DESC LIMIT 21; args=(2,)

而从根源上解决这个问题要涉及到MySQL的配置,django官方文档中给出了解决方案。MySQL使用时区查询,需要先用mysql_tzinfo_to_sql载入时区表。不过这个办法在windows下好像行不通。

最好的解决办法其实是换

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值