Andra UPPDATERING:
Nu fick jag det att fungera i alla versioner:
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
Du behöver bara initiera variabeln inuti frågan.
UPPDATERING:
Det konstiga är att den här fungerar på min lokala dator utan problem (version 5.1.41-3ubuntu12.7-log), men inte i din 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
SLUT PÅ UPPDATERING
Har du testat så här?
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')
)
;
Min gissning är att DATE()
funktionen misslyckas, eftersom du är varchar
(är det?) datum är inte i ISO-format. Därför måste du använda STR_TO_DATE()
funktion.
För exakt användning av STR_TO_DATE()
läs här och här . Jag är inte säker på mikrosekundsdelen.