Это неверно, так как включает данные за 2014-01-01, который не является днем 2013 года.
Вместо интервала, который проверяет закрытый интервал, используйте >=
и <
для поиска интервала, открытого в конце.
SELECT *
FROM sales
WHERE sales_date >= '2013-01-01'
AND sales_date < '2014-01-01';
Вы также можете использовать year()
или datepart()
, чтобы извлечь год, как в
...
WHERE year(sales_date) = 2013;
или
...
WHERE datepart(year, sales_date) = 2013;
Но это предотвратит использование любого индекса на sales_date
, что не очень хорошо с точки зрения производительности.Так что это не лучший способ запроса этих данных, первый подход с >=
и <
предпочтительнее.