Mysql
 sql >> база данни >  >> RDS >> Mysql

Групиране на времеви марки в MySQL с PHP

Петър

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

Вашият набор от резултати, предвид горните данни, ще изглежда така:

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

Могат да бъдат намерени още много свързани функции тук .

Редактиране

След като направих някои собствени тестове въз основа на резултата от вашия коментар, установих, че вашата база данни е в състояние на епичен провал . :) Използвате INT като TIMESTAMPs. Това никога не е добра идея. Няма основателна причина да използвате INT вместо TIMESTAMP/DATETIME.

Въпреки това ще трябва да промените моя горен пример, както следва:

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

Редактиране 2

Можете да използвате допълнителни клаузи GROUP BY, за да постигнете това:

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

Забележете, пропуснах FROM_UNIXTIME() за краткост.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Методът Illuminate\Support\Collection::save не съществува в Laravel

  2. Как да конвертирате таблица с резултати в JSON масив в MySQL

  3. dayname(curdate()) НЕ работи в codeigniter php

  4. Поръчайте резултат от Mysql група от

  5. как да съхранявам видео в база данни с помощта на mysql?