這裏查詢來完成你似乎在尋找什麼:
SELECT CAST(DATEPART(HH, time) AS VARCHAR(2))+':00 - '+CAST(DATEPART(HH, time)+1 AS VARCHAR(2))+':00', COUNT(*)
FROM your_table
GROUP BY DATEPART(HH, time)
這裏是SQL Fiddle
[編輯]代碼:
根據新的要求,下面的查詢可以完成你想要什麼:
SELECT (CAST(DATEPART(HH, time) AS VARCHAR(2)) +
CASE WHEN DATEPART(MI, time) <= 30 THEN ':00 - '+CAST(DATEPART(HH, time) AS VARCHAR(2))+':30'
ELSE ':30 - '+CAST(DATEPART(HH, time)+1 AS VARCHAR(2))+':00' END) AS r,
COUNT(*)
FROM your_table
GROUP BY
(CAST(DATEPART(HH, time) AS VARCHAR(2)) +
CASE WHEN DATEPART(MI, time) <= 30 THEN ':00 - '+CAST(DATEPART(HH, time) AS VARCHAR(2))+':30'
ELSE ':30 - '+CAST(DATEPART(HH, time)+1 AS VARCHAR(2))+':00' END)
這裏的代碼是SQL Fiddle
如果你不想使用CASE
聲明兩倍在上面的查詢,那麼你可以在封閉電流如下內查詢外部查詢做GROUP BY
:
SELECT r, COUNT(*) AS cnt FROM
(
SELECT (CAST(DATEPART(HH, time) AS VARCHAR(2)) +
CASE WHEN DATEPART(MI, time) <= 30 THEN ':00 - '+CAST(DATEPART(HH, time) AS VARCHAR(2))+':30'
ELSE ':30 - '+CAST(DATEPART(HH, time)+1 AS VARCHAR(2))+':00' END) AS r
FROM your_table
) tab
GROUP BY r
這裏代碼在SQL Fiddle
讓我知道它是否解決了您的問題。
請問DB服務器? SQL Server或Oracle或MySQL .. –
@DipenduPaul對不起:sql server – Alist3r
以何種方式將時間存儲在表中? –