sql >> Databasteknik >  >> RDS >> Mysql

Gruppera tidsstämplar i MySQL med PHP

Peter

SELECT COUNT(*), HOUR(timecode)
FROM timecodeTable
GROUP BY HOUR(timecode);

Din resultatuppsättning, givet ovanstående data, skulle se ut så här:

+----------+----------------+
| COUNT(*) | HOUR(timecode) |
+----------+----------------+
|       10 |             18 | 
+----------+----------------+

Många fler relaterade funktioner finns här .

Redigera

Efter att ha gjort några egna tester baserat på resultatet av din kommentar fastställde jag att din databas är i ett tillstånd av episkt misslyckande . :) Du använder INT som TIDSTÄMPLAR. Det här är aldrig en bra idé. Det finns ingen berättigad anledning att använda en INT i stället för TIMESTAMP/DATETIME.

Som sagt, du måste ändra mitt exempel ovan enligt följande:

SELECT COUNT(*), HOUR(FROM_UNIXTIME(timecode))
FROM timecodeTable
GROUP BY HOUR(FROM_UNIXTIME(timecode));

Redigera 2

Du kan använda ytterligare GROUP BY-satser för att uppnå detta:

SELECT 
  COUNT(*),
  YEAR(timecode),
  DAYOFYEAR(timecode),
  HOUR(timecode)
FROM timecodeTable
GROUP BY YEAR(timecode), DAYOFYEAR(timecode), HOUR(timecode);

Obs, jag har utelämnat FROM_UNIXTIME() för korthetens skull.




  1. Hur man automatiserar distributionen av PostgreSQL-databasen

  2. MySQL kraschar vid start

  3. Hantera Connection Pooling i multi-tenant webbapp med Spring, Hibernate och C3P0

  4. Mysql-fråga med två tabeller php