There is a potential gotcha with this syntax:
WHERE [Invoice Date Key] BETWEEN '2014-01-01' AND '2014-12-01'
The data types of the table in this example are of "date" types. It will work as expected. But, I have seen this syntax cause significant issues when the data type of the column is a smalldatetime, datetime, or datetime2.
This syntax fails to consider the time portion of the dates, so it will cut off the last day's worth of data in the range. In this example, if the column was a datetime type, there would be no data included for 12/1/2014 after midnight.
Coincidentally, the best story I can relate about this issue was a monthly sales report. The accounting folks came to me and asked why the sum of the 12 months of the reports never match up to the numbers if they run the report for an entire year.
The last day of every month was essentially cut off. And, it had been like that for 6 years. The company had been under-reporting income for 6 years.