Как выбрать между двумя датами в SQL Server - PullRequest
0 голосов
/ 22 мая 2019

Мне нужно указать число выборок в таблице, используя диапазон из двух дат, однако мои даты представлены в формате "гггг-ММ-дд", и когда я выполняю выборочный SQL, он возвращает следующую ошибку:

Преобразование типа данных varchar в тип данных datetime привело к значению вне диапазона

Вот запрос, который я использую:

SELECT COUNT(*) AS score 
FROM requests 
WHERE date_em BETWEEN '2019-04-01' AND '2019-04-30'

Структура таблицы

  • date_em = DATETIME

Может кто-нибудь мне помочь?

Ответы [ 2 ]

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

Мой предпочтительный метод:

SELECT COUNT(*) AS score
FROM requests
WHERE date_em >= '2019-04-01' AND
      date_em < '2019-05-01'

Это обрабатывает компонент времени и будет использовать индекс.

В SQL Server также хорошо работает следующее:

SELECT COUNT(*) AS score
FROM requests
WHERE CONVERT(date, date_em) BETWEEN '2019-04-01' AND '2019-04-30'

В SQL Server также будет использоваться индекс (если доступен). Однако обычно функции для столбцов исключают использование индекса, поэтому я больше сомневаюсь в этом подходе.

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

Вы пробовали это

SELECT COUNT(*) AS score FROM requests WHERE date_em BETWEEN '2019-04-01 00:00' AND '2019-04-30 23:59'

добавьте 00:00 и 23:59, чтобы оно выглядело как DateTime.

...