1. 程式人生 > >SQL Server 中獲取時間

SQL Server 中獲取時間

最經需要分析資料庫表中的資料,資料量相當大,其中時間欄位精確到微妙,但是在實際分析的時候時間欄位只需要精確到小時,但是經過查閱資料並沒有找到直接提取時間屬性到小時的,因此想到通過分別獲取年月日時分秒屬性,重新生成日期欄位,最後將查詢結果輸出到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