Segunda ATUALIZAÇÃO:
Agora eu consegui funcionar em todas as versões:
select
*
from
Payroll
inner join
(
SELECT DATE(DATE_ADD('2012-10-05',
INTERVAL @i:[email protected]+14 DAY) ) AS dateP
FROM Payroll, (SELECT @i:=0) r
where @i < DATEDIFF(now(), date '2012-10-05')
) sq on Payroll.datestamp = sq.dateP
Você só precisa inicializar a variável dentro da consulta.
ATUALIZAÇÃO:
O estranho é que este funciona na minha máquina local sem problemas (versão 5.1.41-3ubuntu12.7-log), mas não no seu SQLfiddle.
set @i:= 0;
select
*
from
Payroll
inner join
(
SELECT DATE(DATE_ADD('2012-10-05',
INTERVAL @i:[email protected]+14 DAY) ) AS dateP
FROM Payroll
where @i < DATEDIFF(now(), date '2012-10-05')
) sq on Payroll.datestamp = sq.dateP
FIM DA ATUALIZAÇÃO
Você já tentou assim?
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:[email protected]+14 DAY) ) AS dateP
FROM payroll
where @i < DATEDIFF(now(), date '2012-10-05')
)
;
Meu palpite é que o
DATE()
função falha, porque você é varchar
(é?) a data não está no formato ISO. Portanto, você deve usar STR_TO_DATE()
função. Para uso exato de
STR_TO_DATE()
leia aqui e aqui . Não tenho certeza sobre a parte do microssegundo.