想做个趋势图有个时间取值不行。大神SQL教教

declare @index int

set @index = 0

while @index <= 30

begin


-- select * from  #tmppinfa

insert into #tmpdangyue

select  CONVERT(DATE,getdate()-@index,23)  日期,A.县区,AA.故障量

FROM  #tmpall A

LEFT JOIN 

(

select 县区,count(distinct(工单号)) as 故障量

from #tmpty

where 1=1 AND CONVERT(VARCHAR(20),完成日期,23) = CONVERT(VARCHAR(20),'${日期+" 20:00:00"}'-@index,23)

group by 县区

)AA

ON A.县区=AA.县区


错误是:将 varchar 值 '${日期+" 20:00:00"}' 转换成数据类型 int 时失败。


想循环30天,天的取值是当天20:00至昨天20:00  为1天

用户e3520240 发布于 2020-11-16 17:24
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
zsh331Lv8专家互助
发布于2020-11-16 17:32(编辑于 2020-11-16 17:42)
CONVERT(VARCHAR(20),完成日期,23) = CONVERT(VARCHAR(20),dateadd(dd,-@index,'${CONCATENATE(日期," 20:00:00")}'),23)

====

改成上面的脚本再试试;

============

oracle日期可以直接这么相减,但sql server不行。感觉问题就出在这里;

  • 2关注人数
  • 243浏览人数
  • 最后回答于:2020-11-16 17:42
    请选择关闭问题的原因
    确定 取消
    返回顶部