View Single Post

   
  #3 (permalink)  
Old 05-10-2008, 03:12 PM
Plamen Ratchev
 
Posts: n/a
Default Re: optimal selection of all records for a certain month (illegal dates OK?)

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

Reply With Quote