﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
34659	mysql backend creates queries using CONVERT_TZ even when this is not supported	Klaas van Schelven	nobody	"To test whether a mysql server has the zoneinfo database loaded (feature name: `has_zoneinfo_database`), the [https://github.com/django/django/blob/1fe0b167af3611cca79e8a8092ee929312193c6f/django/db/backends/mysql/base.py#L410 following code] is run:


{{{
CONVERT_TZ('2001-01-01 01:00:00', 'UTC', 'UTC') IS NOT NULL
}}}



However, this test is not actually used (i.e. there is no condition on the feature being True) when [https://github.com/django/django/blob/main/django/db/backends/mysql/operations.py#L94 generating sql], despite the fact that the generated sql contains something that we know will evaluate to `NULL`, namely, the very same `CONVERT_TZ` mentioned in the above.

This shows up when filtering like so:

{{{
Foo.objects(some_datetimefield__date=""2023-06-16"")
}}}

which evaluates to the empty queryset, despite there being such objects. On a mysql database without the zoneinfo database loaded, and with `USE_TZ = True`, obviously


"	Uncategorized	closed	Database layer (models, ORM)	4.2	Normal	duplicate			Unreviewed	0	0	0	0	0	0
