SQL語句統計一段時間內的記錄數


 

實際應用中經常需要統計單位時間的記錄數:

一個小時:

   SELECT 
   CONVERT(VARCHAR(10),createdate,120) AS 日期 ,DATEPART(hh,createdate) AS 小時,COUNT(*)AS 記錄  --varchar(10)得到結果為日期('2016-01-01')
   FROM log                                              --或者用DATE格式提取日期(VARCHAR(10)換成DATE)
where createdate>=CONVERT(VARCHAR(10),createdate,120)+' 00:00:00' and
createdate<=(CONVERT(VARCHAR(10),createdate,120))+' 23:59:59'
 GROUP BY CONVERT(VARCHAR(10),createdate,120),DATEPART(hh,createdate) orderby 日期,小時 --group by 不能用別名

半個小時:

   SELECT 
   CONVERT(VARCHAR(10),createdate,120) AS 日期 ,DATEPART(hh,createdate) AS 小時,COUNT(*)AS 記錄  --varchar(10)得到結果為日期('2016-01-01')
   FROM log                                             --或者用DATE格式提取日期(VARCHAR(10)換成DATE)
where createdate>=(CONVERT(VARCHAR(10),createdate,120))+' 00:00:00' and
createdate<=(CONVERT(VARCHAR(10),createdate,120))+' 23:59:59'

GROUP BY CONVERT(VARCHAR(10),createdate,120),DATEPART(hh,createdate),DATEPART(mi,createdate)/30 --以每30分鍾為一組進行統計 order by 日期,小時

 一分鍾:

   SELECT 
   CONVERT(VARCHAR(10),createdate,120) AS 日期 ,DATEPART(hh,createdate) AS 小時,DATEPART(mi,createdate) AS 分鍾,COUNT(*)AS 記錄  
--varchar(10)得到結果為日期('2016-01-01') FROM log --或者用DATE格式提取日期(VARCHAR(10)換成DATE) where createdate>=CONVERT(VARCHAR(10),createdate,120))+' 00:00:00' and createdate<=CONVERT(VARCHAR(10),createdate,120))+' 23:59:59' GROUP BY CONVERT(VARCHAR(10),createdate,120),DATEPART(hh,createdate),DATEPART(mi,createdate) orderby 日期,小時,分鍾 --group by 不能用別名

 

參考:

 SQL Server CONVERT() 函數介紹 

定義和用法

CONVERT() 函數是把日期轉換為新數據類型的通用函數。

CONVERT() 函數可以用不同的格式顯示日期/時間數據。

語法

CONVERT(data_type(length),data_to_be_converted,style)

data_type(length) 規定目標數據類型(帶有可選的長度)。data_to_be_converted 含有需要轉換的值。style 規定日期/時間的輸出格式。

可以使用的 style 值:

Style ID Style 格式
100 或者 0 mon dd yyyy hh:mi AM (或者 PM)
101 mm/dd/yy
102 yy.mm.dd
103 dd/mm/yy
104 dd.mm.yy
105 dd-mm-yy
106 dd mon yy
107 Mon dd, yy
108 hh:mm:ss
109 或者 9 mon dd yyyy hh:mi:ss:mmmAM(或者 PM)
110 mm-dd-yy
111 yy/mm/dd
112 yymmdd
113 或者 13 dd mon yyyy hh:mm:ss:mmm(24h)
114 hh:mi:ss:mmm(24h)
120 或者 20 yyyy-mm-dd [hh:mi:ss(24h)]
121 或者 21 yyyy-mm-dd [hh:mi:ss.mmm(24h)]
126 yyyy-mm-ddThh:mm:ss.mmm(沒有空格)
130 dd mon yyyy hh:mi:ss:mmmAM
131 dd/mm/yy hh:mi:ss:mmmAM

實例

下面的腳本使用 CONVERT() 函數來顯示不同的格式。我們將使用 GETDATE() 函數來獲得當前的日期/時間:

CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),110) 
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)

結果類似:

Dec 29 2008 11:45 PM
12-29-2008
29 Dec 08
29 Dec 2008 16:25:46.635

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM