Mysql
 sql >> Base de données >  >> RDS >> Mysql

Groupe Django MySQL par jour avec fuseau horaire

Ah, c'était un bon défi. J'ai pu tester à partir de PostGres et je peux confirmer que cela fonctionne. Le code MySQL devrait être assez proche. Cependant, il y a une note sur le documentation CONVERT_TZ :

MySQL (en utilisant CONVERT_TZ(dt , de_tz, à_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 : (en utilisant AT TIME ZONE )

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')
)