Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Zawężenie wyboru do danych z bieżącego miesiąca
Forum PHP.pl > Forum > Bazy danych > MySQL
lorak110786
Mam tabelę z kolumną kup_data w której, jak sama nazwa sugeruje, są daty w formacie 0000-00-00. Podczas SELECTa chciałbym wybrać te rekordy, które były wprowadzone bieżącego miesiąca (od pierwszego do obecnej daty, rekordy nowsze niż obecna data nie istnieją więc nie trzeba dawać górnej granicy).

Napisałem taki warunek:
  1. WHERE kup_data >= CONCAT_WS('-',YEAR(CURDATE()),MONTH(CURDATE()),'01')


On działa, ale wg. mnie jest nieelegancki. Da się to zrobić jakoś sprytniej? Timestamp nie wchodzi w grę.
kefirek
  1. WHERE MONTH(kup_data) = MONTH(CURDATE()) AND YEAR(kup_data) = YEAR(CURDATE())
lorak110786
Dziękuję, faktycznie dużo sensowniej:)
Mchl
A to może wygląda potwornie, ale za to pozwala skorzystać z indeksu.

Kod
WHERE date BETWEEN ((EXTRACT(YEAR_MONTH FROM CURDATE())*100)+1) AND DATE((EXTRACT(YEAR_MONTH FROM CURDATE()+ INTERVAL 1 MONTH)*100)+1) - INTERVAL 1 DAY;


oczywiście jak nie potrzeba górnej granicy, to można się ograniczyć do:

Kod
WHERE date >=((EXTRACT(YEAR_MONTH FROM CURDATE())*100)+1);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.