Den 31 september är inte ett datum, så SQL kan inte konvertera det till ett.
Dessutom bör du hårdkoda datum i ett kulturospecifikt format (ååååMMdd). 01/08/2012
kan konvertera till 1 augusti på din server, men körs på en annan och det kan vara 8 januari. 20120801 konverteras till 1 augusti alla maskiner.
Dessutom Varför konverterar du datum till NVARCHAR
? Du tar bort alla fördelar med index du har och utför även onödiga implicita och explicita omvandlingar. Förutsatt MESSAGEINSERTDATE
är en DATETIME-kolumn som du bara kan använda
WHERE MESSAGEINSERTDATE BETWEEN '20120801' AND '20120930'
Om du behöver ta bort tiden från MESSAGEINSERTDATE
använda
CAST(MESSAGEINSERTDATE AS DATE)