As you already found out invalid dates will result in error. Not sure why
you sent the dates in string format. The best is to pass dates as date and
time data type parameters to avoid any conversion.
One way to utilize indexes is to pass the start date (since that is always
the first of the month) and then calculate the end of the month (or rather
the first of the next month and use < to compare). It could look like
this:
SELECT <columns>
FROM Table
WHERE datex >= '20080501'
AND datex < DATEADD(month, DATEDIFF(month, 0, '20080501') + 1, 0);
That way you do not have to worry about issues with the end date. And if
you
always pass the first of the month, you can simplify to DATEADD(month, 1,
'20080501').
HTH,
Plamen Ratchev
http://www.SQLStudio.com


|