共計 1653 個字符,預計需要花費 5 分鐘才能閱讀完成。
行業資訊
數據庫
SQL Server 日期函數 CAST 和 CONVERT 以及在業務中的使用是怎樣的
SQL Server 日期函數 CAST 和 CONVERT 以及在業務中的使用是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面丸趣 TV 小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
最近時間剛從客戶端轉入后臺寫服務,對于后臺數據庫以及服務的書寫完全是個小白,所以最近寫的肯定沒有太多技術含量。首先把遇到的問題擺出來:還是那張錯誤上報表,字段主要有上報錯誤 ID(ErrorID),上報人(ReportPerson),上報時間(ReportTime)精確到毫秒, 現在要做的統計是:
(1)統計一定時間內【起止時間精確到毫秒】(beginTime,endTime) 每個人每天上報的錯誤個數
(2)統計一定時間內【起止時間到精確到月】(beginTime,endTime)按月統計每個人上報的錯誤總數。
看到問題首先想到的是要 group by ReportPerson,能將每個人的統計數據計算出來,但是還沒達到要求,還需要獲得每個人每天的統計數據,把規定一下時間格式,然后把時間格式限定到天和月,這兩個問題就解決了。
現在就本文章中用到的 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 等。
現在就用這些知識解決我的我的問題,首先是按日統計上報量,精確到日 時間限制為:
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 )
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注丸趣 TV 行業資訊頻道,感謝您對丸趣 TV 的支持。