Das weiß ich nicht. Habe die Timestamps per PHP (time()) erzeugt, und in die Datenbank übertragen. Jede Person hat einen, wenn sie sich anmeldet. In der Datenbank ist der Timestamp dann als Integer abgelegt.
Dann ist es time_t und du bist mit den genannten Problemen konfrontiert.
Glaube nicht, dass es mit BETWEEN und DATEDIFF funktioniert.
Die Ausgabe soll in etwa so aussehen:
Datumsklasse | Anzahl Benutzer
Von x1-x2 | 4
Von y1-y2 | 6
Von z1-z2 | 2
Nach z2 | 14
Wenn du eine endliche Liste solcher bereiche hast, kannst du das problemlos mit mehreren einzelnen SELECT-Statements machen die du per union verbindest.
SELECT
'Von x1-x2' as Datumsklasse
COUNT(benutzer) as `Anzahl Benutzer`
WHERE
datum BETWEEN datum1 AND datum2
UNION ALL
SELECT
-- weiter mit der nächsten Klasse
datum1 und darum2 ermittelst du mit den Datums- und Zeitfunktionen von MySQL