SQL Server 日期函數CAST 和 CONVERT 以及在業務中的使用介紹

來源:互聯網
上載者:User

最近時間剛從用戶端轉入後台寫服務,對於後台資料庫以及服務的書寫完全是個小白,所以最近寫的肯定沒有太多技術含量。

首先把遇到的問題擺出來:還是那張錯誤上報表,欄位主要有上報錯誤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 )

執行結果為:

好了,今天就到此為止吧,如果哪位大師有更好的方法,歡迎留言!!!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.