sql >> Databáze >  >> RDS >> Mysql

Seskupování časových razítek v MySQL s PHP

Petr

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

Vaše sada výsledků by vzhledem k výše uvedeným údajům vypadala takto:

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

Mnoho dalších souvisejících funkcí lze nalézt zde .

Upravit

Po provedení několika vlastních testů na základě výstupu vašeho komentáře jsem zjistil, že vaše databáze je ve stavu epického selhání . :) Používáte INT jako TIMESTAMP. To není nikdy dobrý nápad. Neexistuje žádný opodstatněný důvod používat INT místo TIMESTAMP/DATETIME.

To znamená, že byste můj výše uvedený příklad museli upravit následovně:

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

Úprava 2

K dosažení tohoto cíle můžete použít další klauzule GROUP BY:

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

Poznámka:FROM_UNIXTIME() jsem pro stručnost vynechal.




  1. ORA-01882:Oblast časového pásma nebyla v Entity Framework nalezena

  2. jaký je problém s AttachDbFilename

  3. Jak zobrazit obsah tabulky v GUI Mysql Workbench?

  4. Jak VLOŽIT řetězec se symbolem jednoduchých uvozovek '