我有以下查询:
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
是 avarchar
并且形式为YYYYMM
,也不例外pToDate
是 a datetime
。
这个查询应该做的是:从表Product
中获取前 100 个 id,它们的年份与 的前四位数字term
相同,月份与 的后两位数字相同@term
。
我也试过了cast(substring(@term,1,4) to int)
。
该变量value
在这里应该是不感兴趣的。
值是正确的,包括月份和年份以及变量的值@term
。问题是它返回一个空查询,尽管数据库中有数百个值。
如果我打印转换的值,它会给我一个表格,如
2008 | 8
2008 | 9
2008 | 10
......等等。
如果我只写年份和月份,这些是我得到的确切值。
我哪里出错了,解决方案是什么?