T-SQL DateDiff - раздел несколько “целые часы назад”, а не “минуты времен повернулся 00 с тех пор”

У меня есть таблица с метками времени, и я хочу разделить эту таблицу в часовые интервалы, запускающиеся в теперь и идущие назад несколько часов. Я не могу получить результаты, в которых я нуждаюсь с функцией DATEDIFF T-SQL, так как она считает количество раз, которое минутная стрелка передает 12 между этими двумя датами - я хочу количество раз их передачи минутной стрелки, где это теперь между меткой времени и теперь.

Существует ли простой способ сделать это в T-SQL?

Обновление: В ответ на комментарии вот некоторые демонстрационные данные, запрос, который я в настоящее время использую и результаты, которые я получаю, а также результаты, которые я хочу.

Демонстрационные данные:

TimeStamp
*********
2010-07-20 11:00:00.000
2010-07-20 10:44:00.000
2010-07-20 10:14:00.000
2010-07-20 11:00:00.000
2010-07-20 11:40:00.000
2010-07-20 10:16:00.000
2010-07-20 13:00:00.000
2010-07-20 12:58:00.000

Текущий запрос:

SELECT TimeStamp, DATEDIFF(HOUR, TimeStamp, CURRENT_TIMESTAMP) AS Diff FROM ...

Результаты:

    TimeStamp                   Diff
    *********                   ****
    2010-07-20 11:00:00.000     2
    2010-07-20 10:44:00.000     3
    2010-07-20 10:14:00.000     3
    2010-07-20 11:00:00.000     2
    2010-07-20 11:40:00.000     2
    2010-07-20 10:16:00.000     3
    2010-07-20 13:00:00.000     0
    2010-07-20 12:58:00.000     1

Что я имел бы:

    -- The time is now, for the sake of the example, 13:40

    TimeStamp                   Diff
    *********                   ****
    2010-07-20 11:00:00.000     3 -- +1
    2010-07-20 10:44:00.000     3
    2010-07-20 10:14:00.000     4 -- +1
    2010-07-20 11:00:00.000     3 -- +1
    2010-07-20 11:40:00.000     2 or 3 -- edge case, I don't really care which
    2010-07-20 10:16:00.000     4 -- +1
    2010-07-20 13:00:00.000     1 -- +1
    2010-07-20 12:58:00.000     1

Я отметил результаты, которые изменились с a +1. Кроме того, я действительно не забочусь, 0-индексируемо ли это или 1-индексируемо, но в основном, если это - теперь 13:40, я хочу отрезки времени, которые заставляют то же значение быть

    12:40-13:40    1 (or 0)
    11:40-12:40    2 (or 1)
    10:40-11:40    3 (or 2)
    09:40-10:40    4 (or 3)

5
задан Tomas Aschan 20 July 2010 в 12:08
поделиться