Как выбрать год, используя предложение WHERE в столбце типа DateTime - PullRequest
1 голос
/ 12 мая 2019

Существует таблица Sales с данными за период с 2005 по 2015 год. Я хочу запросить данные и отфильтровать столбец Sales_Date с типом данных datetime, где год - 2013, включая все остальные столбцы

     SELECT *
     FROM Sales
     WHERE Sales_Date BETWEEN '2013-01-01' AND '2014-01-01';

это правильно или есть функция, специально предназначенная для фильтрации запросов по году datetime тип данных

Ответы [ 2 ]

2 голосов
/ 12 мая 2019

Это неверно, так как включает данные за 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, что не очень хорошо с точки зрения производительности.Так что это не лучший способ запроса этих данных, первый подход с >= и < предпочтительнее.

0 голосов
/ 12 мая 2019

Вы можете использовать функцию year:

SELECT *
FROM   Sales
WHERE  YEAR(Sales_Date) = 2013;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...