31. září není datum, takže SQL jej nemůže převést na datum.
Kromě toho byste měli pevně zakódovat data ve formátu nespecifické kultury (rrrrMMdd). 01/08/2012
můžete převést na 1. srpna na vašem serveru, ale spustit na jiném a může to být 8. ledna. 20120801 se převede na 1. srpna na všech stroje.
Navíc Proč převádíte data na NVARCHAR
? Odstraňujete veškeré výhody indexů, které máte, a také provádíte zbytečné implicitní a explicitní konverze. Za předpokladu MESSAGEINSERTDATE
je sloupec DATETIME, který můžete použít pouze
WHERE MESSAGEINSERTDATE BETWEEN '20120801' AND '20120930'
Pokud potřebujete odstranit čas z MESSAGEINSERTDATE
použití
CAST(MESSAGEINSERTDATE AS DATE)