Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Zawężenie wyboru do danych z bieżącego miesiąca
lorak110786
post 23.02.2010, 20:19:05
Post #1





Grupa: Nieautoryzowani
Postów: 34
Pomógł: 1
Dołączył: 22.06.2009
Skąd: Koszalin/Poznań

Ostrzeżenie: (0%)
-----


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ę.

Ten post edytował lorak110786 23.02.2010, 20:24:36
Go to the top of the page
+Quote Post
kefirek
post 23.02.2010, 20:26:03
Post #2





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

Ostrzeżenie: (0%)
-----


  1. WHERE MONTH(kup_data) = MONTH(CURDATE()) AND YEAR(kup_data) = YEAR(CURDATE())
Go to the top of the page
+Quote Post
lorak110786
post 23.02.2010, 20:48:05
Post #3





Grupa: Nieautoryzowani
Postów: 34
Pomógł: 1
Dołączył: 22.06.2009
Skąd: Koszalin/Poznań

Ostrzeżenie: (0%)
-----


Dziękuję, faktycznie dużo sensowniej:)
Go to the top of the page
+Quote Post
Mchl
post 23.02.2010, 21:10:55
Post #4





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


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


Ten post edytował Mchl 23.02.2010, 21:13:36
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 2.06.2025 - 15:45