django & mysql, queyry使用datetime没有结果
Posted on 一 27 2月 2017 in python
有一个django项目中需要根据日期来查询,在本地调试时没问题,可线上就查询不到结果:
now = datetime.datetime.now()
cashin = Cashin.objects.filter(update_time__month=now.month)
数据库用的是mysql,打印原始sql语句:
print Cashin.objects.filter(update_time__month=now.month)
#SELECT `cash_cashin`.`id`, `cash_cashin`.`create_time`, `cash_cashin`.`update_time`, `cash_cashin`.`status`, `cash_cashin`.`source`, `cash_cashin`.`order_id`, `cash_cashin`.`partner_order_id`, `cash_cashin`.`other`, `cash_cashin`.`desc`, `cash_cashin`.`money` FROM `cash_cashin` WHERE EXTRACT(MONTH FROM CONVERT_TZ(`cash_cashin`.`update_time`, 'UTC', Asia/Shanghai)) = 2
看到其中有提到timezone。于是一搜索,发现可能是没有加载mysql的time_zone为空。
select * from mysql.timezone
果然是,于是加载一下:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
问题解决了,原来是mysql的问题,而不是django。