Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Porównanie kolumn Data tabeli z wygenerowaną listą dat - MYSQL

Druga aktualizacja:

Teraz mam to działające w każdej wersji:

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

Musisz tylko zainicjować zmienną wewnątrz zapytania.

AKTUALIZACJA:

Dziwne jest to, że ten działa na moim lokalnym komputerze bez problemów (wersja 5.1.41-3ubuntu12.7-log), ale nie w twoim 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

KONIEC AKTUALIZACJI

Czy próbowałeś tego w ten sposób?

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

Domyślam się, że DATE() funkcja nie działa, bo jesteś varchar (czy to?) data nie jest w formacie ISO. Dlatego musisz użyć STR_TO_DATE() funkcja.

Dokładne użycie STR_TO_DATE() przeczytaj tutaj i tutaj . Nie jestem pewien co do części mikrosekundowej.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć pierwsze 3 znaki w mysql?

  2. Czas przechowywania MySQL - typ danych?

  3. jQuery UI Sortable, a następnie zapisz kolejność w bazie danych

  4. Użyj relacyjnych baz danych MySQL na Ubuntu 9.04 (Jaunty)

  5. Jak szybko zmienić nazwę bazy danych MySQL (zmienić nazwę schematu)?