gpt4 book ai didi

python - TruncDate 时区参数在 Django 中不起作用

转载 作者:行者123 更新时间:2023-11-29 05:58:46 29 4
gpt4 key购买 nike

无法在 Trunc 函数中更改时区。它总是从 settings.py 中获取时区

import pytz
ind = pytz.timezone('Asia/Calcutta')

查询:

queryset = Order.objects.annotate(date=TruncDate('created_at', tzinfo=ind)).values('date')

通过 queryset.query 检查 sql 查询时

SELECT DATE(CONVERT_TZ(`nm_order`.`created_at`, 'UTC', UTC)) AS `date` FROM `nm_order`

引用:Trunc in Django


但是对于 Extract , 它开始工作了

ORM:

queryset = Order.objects.annotate(date=ExtractDay('created_at',tzinfo=ind)).values('date')

查询:

SELECT EXTRACT(DAY FROM CONVERT_TZ(`nm_order`.`created_at`, 'UTC', Asia/Calcutta)) AS `date` FROM `nm_order`

我是否遗漏了 Trunc 中的某些内容?

我的 settings.py 中的时区设置

IME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

最佳答案

您需要使用 TruncDay()而不是 TruncDate。在文档该部分正下方的用法示例中,您将看到两者之间的区别。

TruncDate 不采用时区选项 - 它使用当前时区并为您提供该时区的日期。

我认为两者之间的区别在于 TruncDate 返回一个 DateField,根据定义它不能识别时区。另一方面,TruncDay 返回一个 DateTimeField(时间部分设置为 00:00:00),它可以识别时区。

关于python - TruncDate 时区参数在 Django 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46931256/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com