我有以下查询:
select top 100 pId from Product
inner join Code on cFKId = pId
where year(pToDate) = convert(int, substring(@term,1,4))
and month(pToDate) = convert(int, substring(@term,5,2))
and codeValue = @value
变量@term
是varchar
,其格式为YYYYMM
,没有例外,pToDate
为datetime
。
这个查询应该做的是:从表Product
获取与term
的前四位数相同的年份的前100个ID,以及与最后两位数字相同的月份@term
。
我也试过了cast(substring(@term,1,4) to int)
。
变量value
在这里应该没有意义。
值是正确的,包括月份和年份以及变量@term
的值。
问题是它返回一个空查询,尽管数据库中有数百个值。
如果我打印转换的值,它会给我一张类似于的表格
2008 | 8
2008 | 9
2008 | 10
......等等。
如果我只写年份和月份,这些是我得到的确切值。
我哪里出错了,解决方案是什么?