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

测试基本达到效果,实现两个时间段之间的数据查找。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值