grzegorz_g
13.01.2011, 12:55:28
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
13.01.2011, 12:56:50
http://dev.mysql.com/doc/refman/5.5/en/dat...-functions.htmlPierwszy 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
14.01.2011, 10:39:48
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
14.01.2011, 10:46:18
no to dodajesz GROUP BY po miesiącach i masz zalatwioną sprawe
grzegorz_g
14.01.2011, 13:56:01
mam takie to zapytanie
SELECT SUM( nrc ) AS gracze, DATE_SUB( CURDATE( ) , INTERVAL 30
DAY ) AS miesiac
FROM web_cpa
WHERE user =55
GROUP BY 'miesiac'
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
14.01.2011, 13:57:53
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
14.01.2011, 22:59:37
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
SELECT date, prowizja FROM `web_cpa`
nospor
15.01.2011, 08:45:52
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
15.01.2011, 09:51:37
a czemu jak dam takie zapytanie
SELECT `date`, `prowizja`, DATE_FORMAT(`date`, '%m-%Y')
FROM web_cpa WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY)
mam dane:
1288542318 | 6 | null
1288542318 | 666 | null
1288130400 | 61 | null
1288566000 | 45 | null
1266542318 | 55 | null
nospor
17.01.2011, 07:38:31
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.