#31640: Trunc() function take tzinfo param into account only when DateTimeField() are used as output_field -------------------------------------+------------------------------------- Reporter: Serhiy | Owner: nobody Type: Bug | Status: new Component: Database | Version: master layer (models, ORM) | Severity: Normal | Keywords: trunc timezone tz Triage Stage: | Has patch: 0 Unreviewed | Needs documentation: 0 | Needs tests: 0 Patch needs improvement: 0 | Easy pickings: 0 UI/UX: 0 | -------------------------------------+------------------------------------- I'm trying to use TruncDay() function like this {{{ TruncDay('created_at', output_field=DateField(), tzinfo=tz_kyiv) }}} but for PostgresSQL the code are generated as {{{ (DATE_TRUNC('day', "storage_transaction"."created_at")) }}} So timezone convertation like {{{ AT TIME ZONE 'Europe/Kiev' }}} was totally missed from sql.
After the investigation of code I've found out that Timezone converting are applied only when output_field=DateTimeField {{{ def as_sql(self, compiler, connection): inner_sql, inner_params = compiler.compile(self.lhs) if isinstance(self.output_field, DateTimeField): tzname = self.get_tzname() sql = connection.ops.datetime_trunc_sql(self.kind, inner_sql, tzname) elif isinstance(self.output_field, DateField): sql = connection.ops.date_trunc_sql(self.kind, inner_sql) elif isinstance(self.output_field, TimeField): sql = connection.ops.time_trunc_sql(self.kind, inner_sql) else: raise ValueError('Trunc only valid on DateField, TimeField, or DateTimeField.') return sql, inner_params }}} **Why is that? Is there any reason for it OR is it only such feature that isn't still implemented?** -- Ticket URL: <https://code.djangoproject.com/ticket/31640> 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 django-updates+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/056.8420579fb33863eae7e0e728f853eb26%40djangoproject.com.