Hallo,

Ik heb een tabel:
user.......tijd
geb1......2009-10-31 20:21:01
basm......2009-10-30 23:41:01
janjaap...2009-10-31 16:08:01

de tijd is een datetime veld in dit geval.
Nu wil ik weten, hoeveel mensen heb ik nu per dag?

Maar hoe doe ik dat? ik heb gegoogled maar kom hier helemaal niet uit. Kan iemand hiermee helpen?

Mocht het nou nodig zijn om die datetime van het tijd veld aan te passen naar iets anders, dan kan dat natuurlijk ook.

Kan iemand mij hiermee helpen?

SELECT COUNT(user)
FROM tabel
WHERE DATE_FORMAT(datum, '%d%m%Y') = DATE_FORMAT(NOW(), '%d%m%Y')


Geeft het aantal gebruikers terug (alleen het aantal, niet de namen!) van diegene die vandaag online zijn (geweest).
Let op... om 11:00 is het waarschijnlijk MINDER dan om 23:00.
Want hij kijkt naar vandaag, niet naar de laatste 24 uur.
(Dat kan ook wel, maar dan krijg je waarschijlijk dat halverwege je dag het aantal bezoekers op die dag terug (lijkt te) lopen.
Omdat de bezoekers 's avonds meer komen dan 's nachts en 's ochtends.
Dankje, dat heeft geholpen :)

Aanteindelijk heb ik je query omgebouwd tot dit:

SELECT DATE_FORMAT( tijd, '%Y%m%d' ) AS date, count( * ) as totaal, UNIX_TIMESTAMP(tijd) as timestamp
FROM log2
GROUP BY date
ORDER BY date DESC
LIMIT 0 , 30

Die data laad ik dan in een grafiekje, en dan heb je leuke statistieken :).
Ik snap niet goed waarom je een UNIX_TIMESTAMP van je DATETIME veld maakt. Je kunt net zo goed DATE_FORMAT(tijd, '%H:%i:%s') doen. De veldnaam tijd is ook verwarrend, want het is geen tijd, het is een DATETIME. Ik zou hem 'datumtijd' noemen, of zoiets.
Jan Koehoorn schreef op 01.11.2009 21:35
Ik snap niet goed waarom je een UNIX_TIMESTAMP van je DATETIME veld maakt. Je kunt net zo goed DATE_FORMAT(tijd, '%H:%i:%s') doen. De veldnaam tijd is ook verwarrend, want het is geen tijd, het is een DATETIME. Ik zou hem 'datumtijd' noemen, of zoiets.


De naam 'tijd' is inderdaad slecht gekozen.

Ik wilde graag wat meer met de timestamp dan alleen de tijd er uit halen (een timestamp rekent gewoon makkelijker).

Reageren