Ah, đây là một thử thách tốt. Tôi đã có thể kiểm tra từ PostGres và tôi có thể xác nhận rằng nó đang hoạt động. Mã MySQL phải khá gần. Tuy nhiên, có một lưu ý trên CONVERT_TZ tài liệu :
MySQL (sử dụng CONVERT_TZ (dt , from_tz, to_tz) )
from_tz = 'UTC'
to_tz = 'Australia/ACT'
report = Sale.objects.extra(
{
'day': "date(CONVERT_TZ(sale_date, '{from_tz}', '{to_tz}'))".format(
from_tz=from_tz,
to_tz=to_tz
)
}
).values(
'day'
).annotate(
day_total=Sum('total')
)
PostGres: (sử dụng VÙNG THỜI GIAN )
time_zone = 'Australia/ACT'
report = Sale.objects.extra(
{'day': "date(sale_date) AT TIME ZONE '{0}'".format(time_zone)}
).values(
'day'
).annotate(
day_total=Sum('total')
)