问题原由:
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')
bu*生的原因: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
测试基本达到效果,实现两个时间段之间的数据查找。