Втора АКТУАЛИЗАЦИЯ:
Сега го накарах да работи във всяка версия:
select
*
from
Payroll
inner join
(
SELECT DATE(DATE_ADD('2012-10-05',
INTERVAL @i:example@sqldat.com+14 DAY) ) AS dateP
FROM Payroll, (SELECT @i:=0) r
where @i < DATEDIFF(now(), date '2012-10-05')
) sq on Payroll.datestamp = sq.dateP
Просто трябва да инициализирате променливата вътре в заявката.
АКТУАЛИЗИРАНЕ:
Странното е, че този работи на моята локална машина без проблеми (версия 5.1.41-3ubuntu12.7-log), но не и във вашия SQLfiddle.
set @i:= 0;
select
*
from
Payroll
inner join
(
SELECT DATE(DATE_ADD('2012-10-05',
INTERVAL @i:example@sqldat.com+14 DAY) ) AS dateP
FROM Payroll
where @i < DATEDIFF(now(), date '2012-10-05')
) sq on Payroll.datestamp = sq.dateP
КРАЙ НА АКТУАЛИЗАЦИЯ
Опитвали ли сте го така?
set @i:= 0;
SELECT distinct datestamp FROM payroll
WHERE STR_TO_DATE(datestamp, '%M, %d %Y %H:%i:%f') in (
SELECT DATE(ADDDATE('2012-10-05',
INTERVAL @i:example@sqldat.com+14 DAY) ) AS dateP
FROM payroll
where @i < DATEDIFF(now(), date '2012-10-05')
)
;
Предполагам, че DATE() функцията е неуспешна, защото сте varchar (нали?) Датата не е във формат ISO. Следователно трябва да използвате STR_TO_DATE() функция.
За точно използване на STR_TO_DATE() прочетете тук и тук . Не съм сигурен за микросекундната част.