SQL Server 中獲取時間
阿新 • • 發佈:2018-12-24
最經需要分析資料庫表中的資料,資料量相當大,其中時間欄位精確到微妙,但是在實際分析的時候時間欄位只需要精確到小時,但是經過查閱資料並沒有找到直接提取時間屬性到小時的,因此想到通過分別獲取年月日時分秒屬性,重新生成日期欄位,最後將查詢結果輸出到Excel進行分析,其實也可以在Excel中直接分析,可是鄙人Excel實在不行,只能藉助於資料庫方法了。下面就記錄一下獲取時間屬性的程式碼,如下:
select TagId,RSSI,RSSIB, Convert(varchar(4),datepart(year,CollectTime))+ '-'+ Convert(varchar(4),datepart(month,CollectTime))+'-'+ Convert(varchar(4),datepart(day,CollectTime))+' '+ Convert(varchar(2),datepart(hour,CollectTime))+':'+ Convert(varchar(2),datepart(minute,CollectTime)) as Time from RSSIData where TagId='LOCATE00097869' order by CollectTime
上述程式碼中時通過Convert()函式來提取時間屬性,獲取到的時間可能如下:
2014-4-1
這個日期值可能和我們期望的固定長度不太一樣,這時可以使用欄位對齊功能,如:
right(replicate('0',10)+ltrim(引數),10)
和上述的SQL程式碼組合,如下面的程式碼:
select TagId,RSSI,RSSIB, right(replicate('0',10)+ltrim(Convert(varchar(4),datepart(year,CollectTime))),4)+ '-'+ right(replicate('0',10)+ltrim(Convert(varchar(4),datepart(month,CollectTime))),2)+'-'+ right(replicate('0',10)+ltrim(Convert(varchar(4),datepart(day,CollectTime))),2)+' '+ right(replicate('0',10)+ltrim(Convert(varchar(2),datepart(hour,CollectTime))),2)+':'+ right(replicate('0',10)+ltrim(Convert(varchar(2),datepart(minute,CollectTime))),2) as Time from RSSIData where TagId='LOCATE00097869' order by CollectTime
這樣日期格式就可以按照我們期望的格式進行輸出,如:
2014-05-06