SQL SERVER Date列和Time列合併成一列處理報表資料
阿新 • • 發佈:2018-12-18
問題原由:
intouch專案中,利用intouch指令碼來儲存資料時,存入的時間格式為:date,time分開儲存。在報表需求中,有需要利用查詢兩個時間段之間的資料。
問題解決:
1.直接寫指令碼(寫出的指令碼有bug)
表結構如下:
select * from 線上資料日報表
where(convert(char(10),date,120)>='2018-10-30' and time>='18:00:00')
and (convert(char(10),date,120)<='2018-11-1' and time<='23:00:00')
bug產生的原因:time也是關鍵字,我想去10.30到11.1之間所有的時間點,因為time位於18:00:00和23:00:00,所以取出來的數為10.30和11.1兩天內,18點到23點的所有資料。不符合設想。
2.利用檢視整合
沒有其他辦法,只能將date列和time列整合成為datetime列,然後再進行sql篩選。
2.1新建檢視
SELECT CONVERT(varchar(30), date) + ' ' + CONVERT(varchar(30), time) AS datetime1, id, CSLJ
FROM dbo.線上資料日報表
3.效果測試
select * from 水量計算 where (convert(char(30),datetime1,120)>='2018-10-30 18:00') and (convert(char(30),datetime1,120)<='2018-11-1 23:00') GO
測試基本達到效果,實現兩個時間段之間的資料查詢。