Основываясь на текущих значениях, которые вы указали для EventTime
, я думаю, вам необходимо уточнить, кто отвечает за заполнение этой таблицы (поскольку вы указали, что это не ваш код), в каком формате находятся данные EventTime
столбец.
В настоящее время мне неизвестен какой-либо конкретный формат даты и времени SQL, который может представлять эту информацию как дату, чтобы вы могли выполнять обработку условия WHERE, которое вы хотите.
Список распространенных форматов даты SQL
Кроме того, я бы предложил, если это возможно, опубликовать код, который отвечает за заполнение таблицы Test
, так как это может дать некоторый показатель в отношении данных (и их формата) в столбце EventTime
.
Редактировать : Судя по комментариям, данные хранятся в базе данных как правильная дата (хотя и в строковом формате). Если это так, ниже должно работать.
Примечание: 121 - это формат, который также включает миллисекунды. Вы также можете дополнительно использовать 120, если ваши даты не нуждаются в миллисекундах
SELECT LogTime, CONVERT(DateTime, eventTime, 121), value
FROM Test
WHERE CONVERT(DateTime, eventTime, 121) BETWEEN
CONVERT(DateTime, '2010-10-12 12:00:00', 121) AND
CONVERT(DateTime, '2010-10-12 17:00:00', 121)
Примечание. Вы можете избежать преобразования для каждой строки в двух жестко закодированных значениях (возможно, в параметрах), выполнив это всего один раз и сохранив вместо этого переменную datetime.
Кроме того, согласно определению , МЕЖДУ включается обе границы.