Druga aktualizacja:
Teraz mam to działające w każdej wersji:
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
Musisz tylko zainicjować zmienną wewnątrz zapytania.
AKTUALIZACJA:
Dziwne jest to, że ten działa na moim lokalnym komputerze bez problemów (wersja 5.1.41-3ubuntu12.7-log), ale nie w twoim 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
KONIEC AKTUALIZACJI
Czy próbowałeś tego w ten sposób?
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')
)
;
Domyślam się, że DATE()
funkcja nie działa, bo jesteś varchar
(czy to?) data nie jest w formacie ISO. Dlatego musisz użyć STR_TO_DATE()
funkcja.
Dokładne użycie STR_TO_DATE()
przeczytaj tutaj i tutaj . Nie jestem pewien co do części mikrosekundowej.