CẬP NHẬT thứ hai:
Bây giờ tôi đã làm cho nó hoạt động ở mọi phiên bản:
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
Bạn chỉ cần khởi tạo biến bên trong truy vấn.
CẬP NHẬT:
Điều kỳ lạ là, cái này hoạt động trên máy cục bộ của tôi mà không gặp sự cố (phiên bản 5.1.41-3ubuntu12.7-log), nhưng không hoạt động trong SQLfiddle của bạn.
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
KẾT THÚC CẬP NHẬT
Bạn đã thử nó như thế này chưa?
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')
)
;
Tôi đoán là DATE()
chức năng không thành công, vì bạn đang varchar
(có phải không?) ngày không ở định dạng ISO. Do đó, bạn phải sử dụng STR_TO_DATE()
chức năng.
Để sử dụng chính xác STR_TO_DATE()
đọc tại đây và tại đây . Tôi không chắc về phần micro giây.