Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Comparação da coluna Data da tabela com uma lista de datas geradas - MYSQL


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.