31 September bukanlah tanggal, jadi SQL tidak dapat mengubahnya menjadi tanggal.
Selain itu, Anda harus membuat kode tanggal dalam format budaya yang tidak spesifik (yyyyMMdd). 01/08/2012
dapat mengonversi ke 1 Agustus di Server Anda, tetapi berjalan di yang lain dan bisa jadi 8 Januari. 20120801 akan dikonversi menjadi 1 Agustus pada semua mesin.
Selain itu Mengapa Anda mengonversi tanggal menjadi NVARCHAR
? Anda menghapus keuntungan dari indeks yang Anda miliki, dan juga melakukan konversi implisit dan eksplisit yang tidak perlu. Dengan asumsi MESSAGEINSERTDATE
adalah Kolom DATETIME yang bisa Anda gunakan
WHERE MESSAGEINSERTDATE BETWEEN '20120801' AND '20120930'
Jika Anda perlu menghapus waktu dari MESSAGEINSERTDATE
gunakan
CAST(MESSAGEINSERTDATE AS DATE)