sql >> Database teknologi >  >> RDS >> Mysql

Tabel Dato kolonne sammenligning med en genereret datoliste - MYSQL

Anden OPDATERING:

Nu fik jeg det til at virke i alle 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 skal bare initialisere variablen inde i forespørgslen.

OPDATERING:

Det mærkelige er, at denne virker på min lokale maskine uden problemer (version 5.1.41-3ubuntu12.7-log), men ikke 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Å OPDATERING

Har du prøvet det på denne måde?

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

Mit gæt er, at DATE() funktion fejler, fordi du er varchar (er det?) dato er ikke i ISO-format. Derfor skal du bruge STR_TO_DATE() funktion.

Til nøjagtig brug af STR_TO_DATE() læs her og her . Jeg er ikke sikker på mikrosekunddelen.




  1. Oprettelse og Bridge-tabeller i MySQL-forespørgsel

  2. Linkadvarsler under opbygning af applikation mod mysql-connector-c/libmysqlclient/mysql C API

  3. Bedste måde at sikre SQL-forespørgsel i PHP

  4. Hvordan GROUP BY korrekt i MySQL?