sql >> Databasteknik >  >> RDS >> Mysql

Tabell Datum kolumn jämförelse med en genererad datumlista - MYSQL

Andra UPPDATERING:

Nu fick jag det att fungera i alla versioner:

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

Du behöver bara initiera variabeln inuti frågan.

UPPDATERING:

Det konstiga är att den här fungerar på min lokala dator utan problem (version 5.1.41-3ubuntu12.7-log), men inte i din 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

SLUT PÅ UPPDATERING

Har du testat så här?

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

Min gissning är att DATE() funktionen misslyckas, eftersom du är varchar (är det?) datum är inte i ISO-format. Därför måste du använda STR_TO_DATE() funktion.

För exakt användning av STR_TO_DATE() läs här och här . Jag är inte säker på mikrosekundsdelen.




  1. Sammanfoga resultat från två separata databaser

  2. Flera frågor VS lagrad procedur

  3. SQL Server 2016

  4. Hämta delsträng i SQL Server