按天筛选Django查询

2024-06-17 13:29:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在按月份筛选查询。 问题是在我的本地机器上一切正常,我得到了预期的结果,但是在生产服务器中查询集没有返回任何结果。在

本地

>>> Works.objects.filter(work_estimated_start_time__day=06)
>>> [<Works: 61: ns>]
>>> w[0].work_estimated_start_time
>>> datetime.datetime(2015, 12, 6, 15, 38, 37, tzinfo=<UTC>)

服务器

^{pr2}$

数据库数据几乎相同。在

来自两个环境的查询(两者相同):

SELECT api_works.`work_id`, `api_works`.`work_central_id_id`, `api_works`.`work_user_id_id`, `api_works`.`work_driver_id_id`, `api_works`.`work_truck_id_id`, `api_works`.`work_estimated_start_time`, `api_works`.`work_start_time`, `api_works`.`work_end_time`, `api_works`.`work_first_pause_start_time`, `api_works`.`work_first_pause_end_time`, `api_works`.`work_second_pause_start_time`, `api_works`.`work_second_pause_end_time`, `api_works`.`work_creation_date`, `api_works`.`work_status`, `api_works`.`work_done`, `api_works`.`work_cancelation`, `api_works`.`work_enterprise_id_id`, `api_works`.`work_truck_type`
FROM `api_works`
WHERE EXTRACT(DAY FROM CONVERT_TZ(`api_works`.`work_estimated_start_time`, 'UTC', Europe/Zurich)) = 6

有人能帮我吗? 谢谢


Tags: 服务器apiiddatetimetimestartworkend
1条回答
网友
1楼 · 发布于 2024-06-17 13:29:34

MySQL在Django中没有本地时区操作。在

使用True时,日期时间字段在过滤前转换为当前时区。为此,您必须安装了pytz,并用mysql_tzinfo_to_sql加载时区表。在

您的生产数据库尚未加载mysql_tzinfo_to_sql。在

解决方案1

生产时加载mysql_tzinfo_to_sql

解决方案2

使用设置为

解决方案3

将DB更改为PostgreSQL。TZ支持是现成的。在

看看没有TZ支持的exampleMySQL。在

相关问题 更多 >