sql >> Base de Datos >  >> RDS >> Mysql

Comparación de columna de fecha de tabla con una lista de fechas generada - MYSQL

Segunda ACTUALIZACIÓN:

Ahora lo tengo funcionando en todas las versiones:

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

Solo tienes que inicializar la variable dentro de la consulta.

ACTUALIZACIÓN:

Lo extraño es que este funciona en mi máquina local sin problemas (versión 5.1.41-3ubuntu12.7-log), pero no en su 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

FIN DE LA ACTUALIZACIÓN

¿Lo has probado así?

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') 
)
;

Supongo que el DATE() la función falla, porque eres varchar (¿lo es?) la fecha no está en formato ISO. Por lo tanto, debe usar STR_TO_DATE() función.

Para el uso exacto de STR_TO_DATE() lea aquí y aquí . No estoy seguro acerca de la parte de microsegundos.