程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SQL Server 日期函數CAST 和 CONVERT 和在營業中的應用引見

SQL Server 日期函數CAST 和 CONVERT 和在營業中的應用引見

編輯:MSSQL

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 )

履行成果為:

好了,明天就到此為止吧,假如哪位年夜師有更好的辦法,迎接留言!!!
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved