sql中填补空缺时间,用了master..spt_values表和isnull(),查询出来的结果还是缺了时间,怎么解决?
select b.RecordDate,isnull(view_EN_TagHis.MeterName,'-') MeterName,isnull(view_EN_TagHis.Value,null) Value,isnull(view_EN_Tag.TagName,'-') TagName
from (
--按照日期范围填补缺失日期
select convert(varchar(23),dateadd(HH,number,'2017-03-06 00:00:00.000'),120) as RecordDate from
master..spt_values
where
datediff(HH,'2017-03-06 00:00:00.000',dateadd(HH,24,'2017-03-06 00:00:00.000'))>=0
and number>=0 and number<24 and type='p')b
left join view_EN_TagHis
on b.RecordDate = view_EN_TagHis.RecordDate
left join view_EN_Tag
on view_EN_Tag.Guid = view_EN_TagHis.TagGuid
where view_EN_TagHis.BuildName = '博威合金'
and view_EN_TagHis.MeterName = '2#主变'
and view_EN_Tag.TagName = '2#主变高压测电流Ia'
order by b.RecordDate
抓取数据时少了9,10,11,12点的数据,但是要求缺的时间数据以“-”填补上。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你
RecordDate
这个字段的数据类型肯定是datetime
类型而你用
ISNULL(date,-)
当起为空时,赋值'-',你想想'-'是datetime
类型么?所以这样赋值当然是错误的
如果你对改时间没有什么要求,只要有就行的话
建议这样写
ISNULL(date,getdate())
默认自动获取当前时间