[MySQL] Typ 'date' a wybór rekordów z ostatniego miesiąca

0

Witam

Mam w bazie danych mnóstwo rekordów z polem 'date' (czyli rok, miesiąc i dzień).

I teraz jesli chciałbym wyciągnąć rekordy z ostatniego miesiąca to musiałbym dodać instrkcję WHERE data='2010-01-01' OR '2010-01-02' itd. aż do 30stu.

Myślałem też o czymś takim:
WHERE data LIKE '%2010-01%'

To działa, choć MySQL wydaje ostrzeżenie.

Czy znacie jakieś inne sposoby na rozwiązanie tego problemu?

0

Sprobuj uzyc funkcji MONTH i YEAR (powinny takie byc ;) ). Zwracaja, jak sie mozna domyslic - miesiac i rok z podanej w argumencie daty.

0

like jest ok, ten warrning jest raczej spowodowany czymś innym

0

like, z % na początku NIGDY nie jest OK! A jak nie wiesz czemu to czas wziąć się za podstawy

0

Misiekd: to raczej nie są podstawy. Ja sam jestem ciekaw, dlaczego nie można tego używać, może wytłumaczysz? :)

0

Nawet phpMyAdmin sugeruje tego typu konstrukcję:

user image

A tego raczej gimnazjaliści bez podstaw nie pisali...

0

bo jest to najwolniejsze wyszukiwanie i żaden indeks go nie przyśpieszy :>
O ile w tekście nie da się inaczej to szukanie przez LIKE w dacie to lekka porażka

0

A nie łatwiej zamieniać na sekundy, od obecnego time odjąć 606024*30 i porównać??

0
WHERE data BETWEEN STR_TO_DATE('01.01.2010','%d.%m.%Y') AND STR_TO_DATE('31.01.2010','%d.%m.%Y')

i masz cały miesiąc, i użyte indeksy (jeśli są), i nikt ani nic nie krzyczy - takie to trudne

1 użytkowników online, w tym zalogowanych: 0, gości: 1