问个参数问题,我把getdate()改成\'${月份}\'。

 CONVERT(VARCHAR(100), [工单归档时间], 20) BETWEEN DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)

and  DATEADD(MONTH, DATEDIFF(MONTH, 0, dateadd(month,1,GETDATE())), 0)

我把getdate()  改成 '${月份}'   

用户e3520240 发布于 2022-3-31 10:52
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
CD20160914Lv8专家互助
发布于2022-3-31 10:53(编辑于 2022-3-31 10:54)

CONVERT(VARCHAR(100), [工单归档时间], 20) BETWEEN DATEADD(MONTH, DATEDIFF(MONTH, 0, '${月份}'), 0)

and  DATEADD(MONTH, DATEDIFF(MONTH, 0, dateadd(month,1,'${月份}')), 0)

这样??不知道你最后要什么结果。以及你录入的月份是什么格式。。

  • 用户e3520240 用户e3520240(提问者) CONVERT(VARCHAR(100), [工单归档时间], 20) 不是已经自动转换了么,难道月份里面也要加CONVERT么
    2022-03-31 10:59 
  • CD20160914 CD20160914 回复 用户e3520240(提问者) 你现在的需求是什么。。最终要实现什么样的结果?就是你录入的参数是如何的。最后想生成的sql是如何的
    2022-03-31 11:00 
  • 用户e3520240 用户e3520240(提问者) 回复 CD20160914 就是出数据,我改成getdate()就可以运行,想用参数筛选月份就报错。
    2022-03-31 11:03 
  • CD20160914 CD20160914 回复 用户e3520240(提问者) getdate()是出来的年月日的数据。。你录入的月份。只录入了一个比如03这样的数据?那肯定不行呀
    2022-03-31 11:04 
  • 用户e3520240 用户e3520240(提问者) 回复 CD20160914 但是之前我是可以,参数也是月份啊,是输入的选择的
    2022-03-31 11:13 
最佳回答
0
shinger@126.comLv2见习互助
发布于2022-3-31 17:18(编辑于 2022-3-31 17:21)

dateadd的第二个参数,必须是日期型的数据,所以传入的月份参数,格式必须为yyyy-MM-dd或者yyyy/mm/dd,例如'2022-03-01',或者'2022/3/14'这样。如果传入的参数格式为YYYY-MM这样,就会报错。

如果你传入的是YYYY-MM这样格式的 ,就要这么写 DATEADD(MONTH, DATEDIFF(MONTH, 0, '${月份}'+'-01'), 0)。

如果是YYYYMM格式的 ,DATEADD(MONTH, DATEDIFF(MONTH, 0, '${月份}'+'01'), 0)。

如果只有月份,前面必须要有年份参数 DATEADD(MONTH, DATEDIFF(MONTH, 0,'${年份}'+'-'+ '${月份}'+'-01'), 0)。

  • 3关注人数
  • 466浏览人数
  • 最后回答于:2022-3-31 17:21
    请选择关闭问题的原因
    确定 取消
    返回顶部