1. 程式人生 > >SQL SERVER Date列和Time列合併成一列處理報表資料

SQL SERVER Date列和Time列合併成一列處理報表資料

問題原由:

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

測試基本達到效果,實現兩個時間段之間的資料查詢。