Den 31. september er ikke en dato, så SQL kan ikke konvertere den til en.
Som en sidebemærkning bør du fastkode datoer i et kulturuspecifikt format (ååååMMdd). 01/08/2012
kan konvertere til 1. august på din server, men køre på en anden, og det kan være den 8. januar. 20120801 konverteres til 1. august alle maskiner.
Derudover Hvorfor konverterer du datoer til NVARCHAR
? Du fjerner enhver fordel ved indekser, du har, og udfører også unødvendige implicitte og eksplicitte konverteringer. Forudsat MESSAGEINSERTDATE
er en DATETIME-kolonne, du bare kunne bruge
WHERE MESSAGEINSERTDATE BETWEEN '20120801' AND '20120930'
Hvis du har brug for at fjerne tidspunktet fra MESSAGEINSERTDATE
brug
CAST(MESSAGEINSERTDATE AS DATE)