A melhor maneira de pensar nesse problema é converter suas datas para um número entre 0 e 365 correspondente ao dia do ano. Em seguida, basta escolher as datas em que essa diferença é inferior a 14 para obter sua janela de duas semanas.
Isso vai quebrar no início ou no final do ano. Mas a aritmética modular simples lhe dá a resposta.
Felizmente, o MySQL tem
DAYOFYEAR(date)
, então não é tão complicado:SELECT * FROM tbl t
WHERE
MOD(DAYOFYEAR(currdate) - DAYOFYEAR(t.the_date) + 365, 365) <= 14
OR MOD(DAYOFYEAR(t.the_date) - DAYOFYEAR(currdate) + 365, 365) <= 14
Aquele
+ 365
extra é necessário, pois o MOD do MySQL retornará números negativos. Esta resposta não leva em conta os anos bissextos corretamente. Se o ano atual não for bissexto e a data atual estiver dentro de 14 dias do final do ano, você perderá um dia em janeiro que deveria ter incluído. Se você se importa com isso, substitua
365
com [the number of days in the year - 1
].