关于数据集时间参数的sql

各位朋友们,请教一下SQL该怎么改写

where sj >= to_date('${startDate}-1 00:00:00','yyyy-mm-dd hh24:mi:ss' )

${if(startDate==FORMAT(today(),'yyyy-MM'),

"and sj <= to_date('"+FORMAT(today(),'yyyy-MM-dd')+" 23:59:59','yyyy-mm-dd hh24:mi:ss' )",

"and sj<= to_date(to_char(last_day(to_date('"+startDate+"-1','yyyy-mm-dd')),'yyyy-mm-dd')||' 23:59:59','yyyy-mm-dd hh24:mi:ss' )"

)}

这是我写的本月时间的语句,字段sj的格式是yyyy-mm-dd hh:mm:ss,输入的参数startDate为yyyy-mm,现在增加需求要算同比,我按照之前的格式改写为去年同月,却怎么也没成功,来请教一下各位朋友们,这样该怎么改写

林夕丶 发布于 2021-1-15 09:44
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
snrtuemcLv8专家互助
发布于2021-1-15 09:52

改成下面的试试

where sj >= to_date('${startDate}'+"-01 00:00:00",'yyyy-mm-dd hh24:mi:ss' )
${if(startDate==FORMAT(today(),'yyyy-MM'),
"and sj <= to_date('"+FORMAT(today(),'yyyy-MM-dd')+" 23:59:59','yyyy-mm-dd hh24:mi:ss' )",
"and sj<= to_date(to_char(last_day(to_date('"+startDate+"-01','yyyy-mm-dd')),'yyyy-mm-dd')+' 23:59:59','yyyy-mm-dd hh24:mi:ss' )"
)}


  • 林夕丶 林夕丶(提问者) 不是啊,我原本的语句能用啊,我是改写成上年本月不行
    2021-01-15 18:41 
最佳回答
0
小学生三岁半Lv5初级互助
发布于2021-1-15 10:00

试一下这个公式:

left(CONVERT(varchar(100),sj,23),4) =left('${startDate}',4)-1 and right(left(CONVERT(varchar(100),sj,23),7),2) =right('${startDate}',2)

最佳回答
0
聪葱Lv6见习互助
发布于2021-1-15 10:34

WHERE 日期字段  BETWEEN dateAdd(yy,-1,(CONVERT(varchar(7), getdate() , 120) + '-1') )AND dateAdd(yy,-1,getdate())   这是SQL server的 去年当月当日 

  • 林夕丶 林夕丶(提问者) 不是嘞,去年当月当日的SQL我会写,但是是要写成数据集参数,并且输入值为yyyy-mm的形式我不会写
    2021-01-18 09:46 
  • 聪葱 聪葱 回复 林夕丶(提问者) 你参数输入么? 是打算把参数转成yyy-mmm嘛?
    2021-01-18 15:50 
  • 林夕丶 林夕丶(提问者) 回复 聪葱 输入的是yyyy-mm的格式,查看报表时是选择月份,按月查看的
    2021-01-19 14:54 
  • 4关注人数
  • 456浏览人数
  • 最后回答于:2021-1-15 10:34
    请选择关闭问题的原因
    确定 取消
    返回顶部