Timestamp

列出分鐘而不是按它們分組

  • June 13, 2014

查看如何從 2 小時間隔時間戳欄位中列出 1 到 120 分鐘,而不是從兩個小時中獲取每一分鐘。

我想要的是這樣的:

min      COUNT(*)  
1        300
2        320
3        294
...      ...
...      ...
61       341
62       210
63       258
...      ...
...      ...
119      196
120      347

我正在做 GROUP BY 但我只得到 60 行收集每小時的結果。

min      COUNT(*)
1        641
2        530
3        552
...      ...
...      ...

抱歉,如果這很愚蠢,但我無法找到關鍵字…“按分鐘分組而不收集,按分鐘列出查詢 mysql,訂購超過 60 分鐘”是我進行的一些搜尋。

我現在正在使用它,當然我知道它不起作用但我想從某些東西初始化,

SELECT MIN(timestamp) AS min, COUNT(field) FROM table WHERE timestamp BETWEEN '2014-06-12 10:00:00' AND '2014-06-12 12:00:00' GROUP BY min

您可以使用timestampdiff函式。您需要使用開始日期作為第二個參數,如下所示:

SELECT TIMESTAMPDIFF(MINUTE,'2014-06-12 10:00:00', timestamp) AS mins, 
COUNT(field) 
FROM table 
WHERE timestamp BETWEEN '2014-06-12 10:00:00' AND '2014-06-12 12:00:00' GROUP BY mins;

一個想法讓我印象深刻——時間戳(無論如何在 MySQL 中)是一個 Unix 紀元——即自 1970 年 1 月 1 日以來的秒數,您可以將其轉換為分鐘。您必須減去兩個日期之間的分鐘數並以此分組。可能是這樣的——發布數據(DDL + DML 或 SQLFiddle),我會測試它。SELECT TIMESTAMPDIFF(MINUTE, end_timestamp, begin_timestamp) AS 分鐘,COUNT(your_field) from your_table GROUP BY minutes ORDER BY minutes ASC;

引用自:https://dba.stackexchange.com/questions/68185