Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql]rekordy z konkretnych miesiacy
Forum PHP.pl > Forum > Przedszkole
grzegorz_g
mam datę w czasie unix zapisaną i teraz potrzebuje w prosty sposób wyliczyć ilość rekodrów z 12 miesięcy wstecz. Czy zostaje mi tylko "between"
nospor
http://dev.mysql.com/doc/refman/5.5/en/dat...-functions.html
Pierwszy przyklad z brzegu
Cytat
Here is an example that uses date functions. The following query selects all rows with a date_col value from within the last 30 days:
mysql> SELECT something FROM tbl_name
-> WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col;
Wiem ze trudno zaglada sie do manuala, ale probojmy od czasu do czasu..
grzegorz_g
posprawdzałem to rozwiązanie ale mi chyba nie o to chodzi
bo w bazie mam pole z data unix i chce wyświetlić dane w ten sposób

bieżący miesiąc: 3rekordy
12.2010: 2 rekordy
11:2010: 4 rekordy
.....
01.2010: 6 rekordów

i szukam właśnie najszybszego i najmniej obciążającego rozwiązania

nospor
no to dodajesz GROUP BY po miesiącach i masz zalatwioną sprawe
grzegorz_g
mam takie to zapytanie

  1.  
  2. SELECT SUM( nrc ) AS gracze, DATE_SUB( CURDATE( ) , INTERVAL 30
  3. DAY ) AS miesiac
  4. FROM web_cpa
  5. WHERE user =55
  6. GROUP BY 'miesiac'
  7.  


pokazuje mi tylko pola gracze i miesiac tylko ze:
956 | 2010-12-15

a ja chce by jak uuser zarejestrował się w listopadzie zeby to pokazało tak np.
955 | 2010-12-15
1 | 2010-11-15

itd
nospor
GROUP BY 'miesiac'
Mowiac "grupuj po miesiącach" mialem na mysli grupowanie po miesiącach a nie po tekscie "miesiąc"...

Miesiące masz przeciez zapisane w polu z datą. Musisz z tego pola wydobyc date w postacu YYYY-mm i sobie po tym grupuj
grzegorz_g
może się źle wyraziłem o formacie danych w bazie mam np.:

1288542318 | 6
1288542318 | 666
1288130400 | 61
1288566000 | 45
1266542318 | 55

takie mam dane jak robie selecta

  1. SELECT date, prowizja FROM `web_cpa`


nospor
wyraziles sie dobrze, tylko nie kumasz co sie do ciebie pisze. Dasze masz w postaci timestamp. zeby sprowadzic ją do postacu YYYY-mm musisz uzyc odpowiedniej funkcji do formatowania daty. Wszystko masz w manualu mysql w dziale funkcji daty i czasu
grzegorz_g
a czemu jak dam takie zapytanie

  1.  
  2. SELECT `date`, `prowizja`, DATE_FORMAT(`date`, '%m-%Y')
  3. FROM web_cpa WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY)
  4.  


mam dane:

1288542318 | 6 | null
1288542318 | 666 | null
1288130400 | 61 | null
1288566000 | 45 | null
1266542318 | 55 | null
nospor
CHodzi ci o te nulle?

Nie:DATE_FORMAT(`date`, '%m-%Y')
a: DATE_FORMAT(FROM_UNIXTIME(`date`), '%m-%Y')
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.