У меня есть столбец DateTime. Я хочу извлечь все записи, скажем, с 8:30 до 16:15 в пределах определенного диапазона дат. Моя проблема в том, что мне нужно сравнивать часы и минуты как одно значение времени. Я могу проверить значение параметра DATEPART для значения «Больше или меньше чем несколько часов», но если я сделаю это в течение нескольких минут, мой запрос не будет выполнен, если время в конце дня будет иметь меньшее значение в минутах.
Я посмотрел на INTERVAL, BETWEEN, DATEPART, DATEDIFF и т. Д., Но не понимаю, как это сделать без значения «TimeOfDay», которое я могу использовать в записях разных дат.
Я попытался вычесть части даты года, месяца и дня, чтобы я мог сравнить только время суток, но при попытке вычесть, скажем, часть года даты, я получаю ошибку переполнения:
Эта часть работает:
select - cast( DATEPART(YEAR, CallTime) as integer) from history
Это не удалось:
select DATEADD(YEAR, - cast( DATEPART(YEAR, CallTime) as integer), CallTime)
from history where calltime is not null
Я также пытался привести части часов и минут к символам, конкатенировать их и сравнить с моим целевым диапазоном, но это также не удается.
Я полагаю, что более новые версии SQL-сервера могут иметь функцию для решения этой ситуации, но это мне не доступно.
Я надеюсь и представляю, что есть простое, очевидное решение, но оно ускользает от меня.