#34699: Filtering on annotated TruncSecond expression gives unexpected result.
-------------------------------------+-------------------------------------
Reporter: Stefan | Owner: Francesco
Type: | Panico
Cleanup/optimization | Status: assigned
Component: Database layer | Version: 4.2
(models, ORM) |
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Comment (by Stefan):
@Natalia, apologies I should've said, it was PSQL 14.3.
I want to clarify that from a purely ORM perspective the result is
surprising, given
{{{#!python
Book.objects.update(published=timezone.now())
Book.objects.annotate(_published_trunc=TruncSecond('published')).filter(_published_trunc__lte=timezone.now()).count()
# 0
}}}
the result is 0. One has to dive in to the SQL to understand why this is
happening, and it's because `AT TIME ZONE 'Europe/Berlin'` is making the
timezone naive in the DB level. The docs do say:
Trunc() - "If a different timezone like Australia/Melbourne is active
in Django, then the datetime is converted to the new timezone before the
value is truncated."
Although it says the datetime is converted to the new timezone before the
value is truncated, ''converted to new timezone'' doesn't necessarily
suggest that the resulting time zone is naive - one could still assume it
an aware timezone just with an offset of +11:00. The latter is further
suggested because the immediately following examples in that doc show the
returned value on the annotation are an aware value with an offset of
+11:00, and not naive.
--
Ticket URL: <https://code.djangoproject.com/ticket/34699#comment:11>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/01070189643eb452-5d5fb5fb-986b-4497-beb1-845bc1d76e79-000000%40eu-central-1.amazonses.com.