﻿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
30494	Problem with ExtractYear()+1 in queries	Alexey Chernov	Simon Charette	"It looks like django doesn't create a correct MySQL query when having a simple arithmetics with ExtractYear().

I have a model with two data fields:
{{{
class Event(models.Model):
	start_date = models.DateField()
	finish_date = models.DateField()
}}}

If I want to find all rows such that the years of start_date and finish_date are equal, I can do it so:
{{{
from django.db.models import F
from django.db.models.functions import ExtractYear
>>> print Event.objects.annotate(year=ExtractYear(F('start_date'))).filter(finish_date__year=F('year')).only('pk').query
SELECT `event`.`id`, EXTRACT(YEAR FROM `event`.`start_date`) AS `year` FROM `event` WHERE EXTRACT(YEAR FROM `event`.`finish_date`) = (EXTRACT(YEAR FROM `event`.`start_date`))
}}}

But if I want to find events that start and finish in consequent years, I try the following filter, and it gives me an incorrect MySQL query:
{{{
>>> print Event.objects.annotate(year=ExtractYear(F('start_date'))).filter(finish_date__year=F('year')+1).only('pk').query
SELECT `event`.`id`, EXTRACT(YEAR FROM `event`.`start_date`) AS `year` FROM `event` WHERE `event`.`finish_date` BETWEEN 0001-01-01 AND 0001-12-31
}}}

I tried to replace `F('year')+1` with `F('year')+Value(1)` but it didn't help.
Am I wrong somewhere, or does it look like a bug?"	Bug	closed	Database layer (models, ORM)	dev	Normal	fixed			Accepted	1	0	0	0	0	0
