SQLストアドプロシージャに次のような行があります(意図したとおりに機能します)。
HAVING oh.startdate BETWEEN @startDate AND @endDate
しかし、さらに下に私は次の行を持っています:
AND (oh.user IN (@userIDs))
@userIDsはIDのコンマ区切り文字列であり、oh.userはINTEGERであるため、SQLクエリ全体を動的文字列(@sql)に入れ、すべてのパラメータを連結してから使用する必要があります。
sp_executesql @sql
日付の間を除いてすべてが正常に機能しています。いくつかの方法を試しましたが、エラーが発生し続けるか、次のような場合に結果が返されません。
HAVING oh.startdate BETWEEN CONVERT(DATETIME, '+LEFT(CONVERT(VARCHAR, @startDate, 120), 10)+', 120) AND CONVERT(DATETIME, '+LEFT(CONVERT(VARCHAR, @endDate, 120), 10)+', 120)
何も返しません。
HAVING oh.startdate '+LEFT(CONVERT(VARCHAR, @startDate, 120), 10)+' AND '+LEFT(CONVERT(VARCHAR, @endDate, 120), 10)+'
また、何も返しません。
HAVING oh.startdate BETWEEN ' + @startDate +' AND '+ @endDate +'
DATETIMEを文字列に変換するときにエラーを返します。
どんな助けでも大歓迎です。
ありがとう、トーマス