2010-01-25 17 views
5

Jak zrobić to w MySQL?MySQL - WYBIERZ GDZIE datę <X

SELECT * FROM MyTable WHERE MyDateCol < TODAY() 

google dużo na ten temat i tak naprawdę nie znaleźć niczego oprócz „patrzeć w dacie MySQL ref”, która nie wyjaśnia wyżej dość łatwo.

wiem, że mogę wykonać następujące czynności, która jest trochę pośrednie:

SELECT * FROM MyTable WHERE MyDateCol BETWEEN (0000-00-00) AND TODAY() 

Odpowiedz

4

W MySQL, masz curdate() funciton, że będzie Ci datę dzisiaj.

Tak, coś takiego powinien zrobić:

select * 
from your_table 
where your_date_column < curdate() 


Cytując stronę podręcznika z tej funkcji:

Zwraca bieżącą datę jako wartość w formacie 'YYYY-MM-DD' lub YYYYMMDD, w zależności od tego, czy funkcja jest używana w ciągu znaków lub w kontekście numerycznym.


A jeśli chcesz porównać do obecnego czasu (i nie tylko dzień), można użyć now() funkcję:

Zwraca bieżącą datę i czas jako wartość w formacie 'YYYY-MM-DD HH:MM:SS' lub YYYYMMDDHHMMSS.uuuuuu

+0

Odnośnie RRRRMMDD formacie numerycznym, to 2010-Mar-27 stają 20100327 lub byłoby to wartość dodana dziesiętny 2,040 –

+1

nie mam serwera, na którym mogę spróbować teraz, ale biorąc pod uwagę instrukcję mówi YYYYMMDD, przypuszczam, że dostaniesz 20100327, i żadnego rodzaju wyniku dodania - który byłby trudny do pracy. –

+0

Sprawdziłem to na moim lokalnym serwerze MySQL, używa liczb takich jak 20100327, co ułatwia porównywanie. Możesz również rzucić datę ciągu bezpośrednio na liczbę, aby użyć go do porównania liczb. '" 2010-03-27 "=>" 20100327 "=> 20100327' –

2
SELECT * FROM MyTable WHERE MyDateCol < CURDATE() 
1

Zastosowanie NOW() funkcja:

SELECT * FROM MyTable WHERE MyDateCol < NOW() 
2

Jeśli MySQL obsługuje sysdate, należy użyć że zamiast NOW() lub CURDATE(), ponieważ jest to bardziej norma.

SELECT * FROM MyTable WHERE MyDateCol < SYSDATE;