MCPcopy
hub / github.com/django/django / as_sql

Method as_sql

django/db/models/functions/datetime.py:258–281  ·  view source on GitHub ↗
(self, compiler, connection)

Source from the content-addressed store, hash-verified

256 super().__init__(expression, output_field=output_field, **extra)
257
258 def as_sql(self, compiler, connection):
259 sql, params = compiler.compile(self.lhs)
260 tzname = None
261 if isinstance(self.lhs.output_field, DateTimeField):
262 tzname = self.get_tzname()
263 elif self.tzinfo is not None:
264 raise ValueError("tzinfo can only be used with DateTimeField.")
265 if isinstance(self.output_field, DateTimeField):
266 sql, params = connection.ops.datetime_trunc_sql(
267 self.kind, sql, tuple(params), tzname
268 )
269 elif isinstance(self.output_field, DateField):
270 sql, params = connection.ops.date_trunc_sql(
271 self.kind, sql, tuple(params), tzname
272 )
273 elif isinstance(self.output_field, TimeField):
274 sql, params = connection.ops.time_trunc_sql(
275 self.kind, sql, tuple(params), tzname
276 )
277 else:
278 raise ValueError(
279 "Trunc only valid on DateField, TimeField, or DateTimeField."
280 )
281 return sql, params
282
283 def resolve_expression(
284 self, query=None, allow_joins=True, reuse=None, summarize=False, for_save=False

Callers

nothing calls this directly

Calls 5

get_tznameMethod · 0.80
compileMethod · 0.45
datetime_trunc_sqlMethod · 0.45
date_trunc_sqlMethod · 0.45
time_trunc_sqlMethod · 0.45

Tested by

no test coverage detected