diff --git a/django/db/backends/oracle/features.py b/django/db/backends/oracle/features.py index b3531a7cc7..05632bb10e 100644 --- a/django/db/backends/oracle/features.py +++ b/django/db/backends/oracle/features.py @@ -179,3 +179,7 @@ class DatabaseFeatures(BaseDatabaseFeatures): @cached_property def supports_boolean_expr_in_select_clause(self): return self.connection.oracle_version >= (23,) + + @cached_property + def supports_aggregation_over_interval_types(self): + return self.connection.oracle_version >= (23,) diff --git a/django/db/models/functions/mixins.py b/django/db/models/functions/mixins.py index caf20e131d..661eee1c13 100644 --- a/django/db/models/functions/mixins.py +++ b/django/db/models/functions/mixins.py @@ -31,7 +31,10 @@ class FixDurationInputMixin: return sql, params def as_oracle(self, compiler, connection, **extra_context): - if self.output_field.get_internal_type() == "DurationField": + if ( + self.output_field.get_internal_type() == "DurationField" + and not connection.features.supports_aggregation_over_interval_types + ): expression = self.get_source_expressions()[0] options = self._get_repr_options() from django.db.backends.oracle.functions import (