Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie według dnia, mając datę w postaci 'time'
Forum PHP.pl > Forum > Bazy danych > MySQL
thomson89
Witam!

Mam w tabeli statystyki odwiedzin strony wraz z innymi informacjami i podanym czasem wejścia w postaci takiej, jak otrzymuje z funkcji time(). Ale chcę wyciągnąć z tej bazy, wyniki pogrupowane dniami - tzn. wszystkie wejścia z dnia 22.07.2009 w jednej grupie, pakiecie i tak samo z wejściami z dnia 17.07.2010. Jak mogę to zrobić?

Pozdrawiam, Mateusz!
Mchl
Jak rozumiem masz na myśli PHPową funkcję time() czyli po prostu unixowy timestamp?

Kod
ORDER BY DATE(FROM_UNIXTIME(kolumna))
thomson89
Dałem sobie tak:
Kod
SELECT * FROM `stat` ORDER BY DATE(FROM_UNIXTIME(`kolumna`))


I pokazuje wszystko. Dlaczego?
Mchl
Może podaj przykład danych i wyniku jaki chciałbyś uzyskać, bo może źle się rozumiemy.
thomson89
Kod
id     ip     skad                   data_wejscia     user_agent
1    xxx    http://www.xxx.pl    1263142037    Opera/9.80
2    xxx    http://www.xxx.pl    1263142050    Opera/9.80
3    xxx    http://www.xxx.pl    1263142269    Opera/9.80
4    xxx    http://www.xxx.pl    1263142377    Opera/9.80


Takich danych, mam kilka tysięcy. I chciałbym wybrać te dane, które pochodzą z danego dnia który podam.

Jeszcze lepiej, gdybym otrzymał numery id które są z jednego dnia. Np. 15 wejść było wczoraj, a 20 dziś. I chcę otrzymać że id 1 - 15 16.07.2010, a id 16 - 36 17.07.2010. Ale nie wiem czy się tak da.

To pierwsze, mi przypasuje ale tak dla nauki chciałbym wiedzieć też drugi sposób.
icetique
  1. SELECT *, DATE(FROM_UNIXTIME(`kolumna`)) AS `data` FROM `stat` GROUP BY DATE(FROM_UNIXTIME(`kolumna`)) ORDER BY `data`


Nie sprawdzałem.
thomson89
To mi daje po jednym rekordzie z jednego dnia.

Ale ten poniżej już spełnia moje oczekiwania, co do wyboru rekordów z danego dnia.

  1. SELECT * , DATE( FROM_UNIXTIME( `data_wejscia` ) ) AS `data`
  2. FROM `stat` WHERE DATE( FROM_UNIXTIME( `data_wejscia` ) ) = '2010-07-18'
Mchl
A może tak?

Kod
SELECT DATE(FROM_UNIXTIME(data_wejscia)) AS data_wejscia, COUNT(*) AS ile, GROUP_CONCAT(id) AS ip FROM stat GROUP BY DATE(FROM_UNIXTIME(data_wejscia))


questionmark.gif
thomson89
No już lepiej. Lecz nie wiem, co otrzymuje w kolumnie IP?

Kod
data_wejscia     ile     ip
2010-01-10    26    [BLOB - 7bajtów]
2010-01-11    38    [BLOB - 18bajtów]
2010-01-12    17    [BLOB - 20bajtów]
2010-01-13    36    [BLOB - 17bajtów]
2010-01-14    18    [BLOB - 23bajtów]
Mchl
ipki posklejane przecinkiem. Możesz to normalnie wyświetlić w PHP.
thomson89
Dzięki wielkie za pomoc!
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.