SQL Server 日期函數CAST 和 CONVERT 和在營業中的應用引見。本站提示廣大學習愛好者:(SQL Server 日期函數CAST 和 CONVERT 和在營業中的應用引見)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL Server 日期函數CAST 和 CONVERT 和在營業中的應用引見正文
比來時光剛從客戶端轉入後台寫辦事,關於後台數據庫和辦事的書寫完整是個小白,所以比來寫的確定沒有太多技巧含量。
起首把碰到的成績擺出來:照樣那張毛病上報表,字段重要有上報毛病ID(ErrorID),上報人(ReportPerson),上報時光(ReportTime)准確到毫秒,如今要做的統計是:(1)統計必定時光內【起止時光准確到毫秒】(beginTime,endTime)每一個人天天上報的毛病個數(2)統計必定時光內【起止時光到准確到月】(beginTime,endTime)按月統計每一個人上報的毛病總數。
看到成績起首想到的是要group by ReportPerson,能將每一個人的統計數據盤算出來,然則還沒到達請求,還須要取得每一個人天天的統計數據,關於我如許的菜鳥來講就有點費事了,不曉得該怎樣下手了,在sql群裡找了個高手,告知須要把劃定一下時光格局,然後把時光格局限制到天和月,這兩個成績就處理了。
上篇曾經將多個時光函數枚舉了出來,如今就本文章頂用到的CAST 和 CONVERT具體引見一下:
先看一下他們的語法:
CAST ( expression AS data_type [ ( length ) ] )
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
個中:
expression: 任何有用的表達式。
data_type: 目的數據類型。 這包含 xml、bigint 和 sql_variant。 不克不及應用別號數據類型。
length: 指定目的數據類型長度的可選整數。 默許值為 30。
style: 指定 CONVERT 函數若何轉換 expression 的整數表達式。 假如款式為 NULL,則前往 NULL。 該規模是由 data_type 肯定的。
和本文相干的重要是length和expression,length是指目的類型的長度,用於限制時光的精度,expression是用來限制輸入時光的格局例如:yyyy/mm/dd/yyyy-mm-dd等。
express的相干的常識和舉例應用可參考下這篇博文:
http://www.jb51.net/article/33330.htm
如今就用這些常識處理我的我的成績,起首是按日統計上報量,准確到日 時光限制為:CONVERT(varchar(11) , ReportTime , 20 ) 即yyyy-mm-dd
然後應用group by 成績就獲得懂得決,sql 代碼為:
select ReportPerson,CONVERT(varchar(11) , ReportTime , 20 ) as 'ReporTime', count(*) as reportTotal from PCR_ConstructInfo where (ReportTime>'2012-11-15 12:11:12.23')and (ReportTime<'2013-1-16 12:11:12.23') group by ReportPerson,CONVERT(varchar(11) , ReportTime , 20 )
履行成果為:
還有一個成績是按月統計每一個人上報毛病量的統計,只需將時光日刻日定到月就行了,即:CONVERT(varchar(7) , ReportTime , 20 ) yyyy-mm 履行sql語句為:
select ReportPerson,CONVERT(varchar(7) , ReportTime , 20 ) as 'ReportTime', count(*) as reportTotal from PCR_ConstructInfo where (ReportTime>'2012-11-1')and (ReportTime<'2013-2-1') group by ReportPerson,CONVERT(varchar(7) , ReportTime , 20 )
履行成果為:
好了,明天就到此為止吧,假如哪位年夜師有更好的辦法,迎接留言!!!