9 月 31 日は日付ではないため、SQL は日付に変換できません。
余談ですが、文化に固有の形式 (yyyyMMdd) で日付をハードコーディングする必要があります。 01/08/2012
あなたのサーバーでは 8 月 1 日に変換されるかもしれませんが、別のサーバーでは 1 月 8 日に実行される可能性があります。 20120801 は、すべてで 8 月 1 日に変換されます
さらに、なぜ日付を NVARCHAR
に変換するのですか ?あなたが持っているインデックスの利点を取り除き、不必要な暗黙的および明示的な変換も実行しています。 MESSAGEINSERTDATE
を想定 ちょうど使用できる DATETIME 列です
WHERE MESSAGEINSERTDATE BETWEEN '20120801' AND '20120930'
MESSAGEINSERTDATE
から時刻を削除する必要がある場合 使う
CAST(MESSAGEINSERTDATE AS DATE)