CONVERT(VARCHAR(100), [工单归档时间], 20) BETWEEN DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
and DATEADD(MONTH, DATEDIFF(MONTH, 0, dateadd(month,1,GETDATE())), 0)
我把getdate() 改成 '${月份}'
CONVERT(VARCHAR(100), [工单归档时间], 20) BETWEEN DATEADD(MONTH, DATEDIFF(MONTH, 0, '${月份}'), 0)
and DATEADD(MONTH, DATEDIFF(MONTH, 0, dateadd(month,1,'${月份}')), 0)
这样??不知道你最后要什么结果。以及你录入的月份是什么格式。。
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)。