Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Tabellendatenspaltenvergleich mit einer generierten Datumsliste - MYSQL

Zweite UPDATE:

Jetzt habe ich es in jeder Version zum Laufen gebracht:

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

Sie müssen nur die Variable innerhalb der Abfrage initialisieren.

AKTUALISIERUNG:

Seltsamerweise funktioniert dieser auf meinem lokalen Rechner ohne Probleme (Version 5.1.41-3ubuntu12.7-log), aber nicht in Ihrem 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

ENDE DER UPDATE

Hast du es schon mal so probiert?

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

Meine Vermutung ist, dass das DATE() Funktion schlägt fehl, weil Sie varchar sind (ist es?) Das Datum ist nicht im ISO-Format. Dazu müssen Sie STR_TO_DATE() verwenden Funktion.

Für die genaue Verwendung von STR_TO_DATE() lesen Sie hier und hier . Beim Mikrosekundenteil bin ich mir nicht sicher.