При условии, что вы назвали эти два столбца DaysSince1970
и HoursSinceMidnight
...
Затем вы можете построить вывод datetime
(не timestamp
), используя выражение
dateadd(hh,HoursSinceMidnight,dateadd(dd,DaysSince1970,'1-jan-1970'))
Однако этот вычисляемый столбец будет ужасен для индексированных поисков, поэтому вам понадобится некоторая логика, например.
DECLARE @DaysSince1970 int
, @HoursSinceMidnight int
, @SearchDateTime datetime
SELECT @DaysSince1970 = datediff(dd,'1-Jan-1970',@SearchDateTime)
, @HoursSinceMidnight = datepart(hh,@SearchDateTime)
-- search your table
SELECT *
FROM tablename
WHERE DaysSince1970 = @DaysSince1970
AND HoursSinceMidnight = @HoursSinceMidnight
В идеале ваш стол будет нуждаться в индексах DaysSince1970
, HoursSinceMidnight
.
Нахождение строк в диапазоне будет простым расширением этого, но помните, что если вы проверяете в течение нескольких дней, не проверяйте диапазон «сырых» часов, просто проверьте диапазон дня, а затем используйте первый метод что я дал вам, чтобы проверить диапазон даты / времени.