0

次のクエリがあります。

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はなく、adatetimeです。
このクエリが行うことになっているのはProduct、 の最初の 4 桁と同じ年とtermの最後の 2 桁と同じ月を持つテーブルから最初の 100 個の ID を取得すること@termです。

私も試してみましたcast(substring(@term,1,4) to int)

ここでは、変数valueは重要ではありません。

月と年の両方の値と変数の値は正しいです@term。問題は、データベースに何百もの値があるにもかかわらず、空のクエリが返されることです。

変換の値を出力すると、
2008 | 8
2008 | 9
2008 | 10
...などのような表が表示されます。

これらは、年と月だけを書いた場合に得られる正確な値です。

どこが間違っていて、解決策は何ですか?

4

0 に答える 0