PEMBARUAN Kedua:
Sekarang saya membuatnya bekerja di setiap versi:
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
Anda hanya perlu menginisialisasi variabel di dalam kueri.
PERBARUI:
Anehnya, yang ini bekerja di mesin lokal saya tanpa masalah (versi 5.1.41-3ubuntu12.7-log), tetapi tidak di SQLfiddle Anda.
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
AKHIR PEMBARUAN
Sudahkah Anda mencobanya seperti ini?
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')
)
;
Dugaan saya adalah, bahwa DATE()
fungsi gagal, karena Anda varchar
(apakah?) tanggal tidak dalam format ISO. Oleh karena itu Anda harus menggunakan STR_TO_DATE()
fungsi.
Untuk penggunaan yang tepat dari STR_TO_DATE()
baca di sini dan di sini . Saya tidak yakin tentang bagian mikrodetik.