Tengo una tabla con marcas de tiempo, y quiero dividir esta tabla en intervalos de una hora, comenzando de ahora en adelante hacia atrás un par de horas. No puedo obtener los resultados que necesito con la función T-SQL DATEDIFF, ya que cuenta el número de veces que la manecilla de minutos pasa 12 entre las dos fechas. Quiero el número de veces que la manecilla de minutos pase donde está ahora entre la marca de tiempo y ahora.T-SQL DateDiff - Partición por "horas completas", en lugar de "minutos multiplicados por 00 desde"
¿Hay una manera directa de hacer esto en T-SQL?
Actualización: En respuesta a los comentarios, he aquí algunos datos de ejemplo, la consulta actualmente estoy usando y los resultados que estoy obteniendo, así como los resultados que quiero.
datos de la muestra:
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
consulta actual:
SELECT TimeStamp, DATEDIFF(HOUR, TimeStamp, CURRENT_TIMESTAMP) AS Diff FROM ...
Resultados:
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
Lo que yo prefiero:
-- 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
He marcado los resultados que cambiaron con un +1
. Además, no me importa si se trata de un índice 0 o 1-indexado, pero básicamente, si es ahora 13:40 Quiero que los lapsos de tiempo que obtienen el mismo valor para ser
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)
se explica que con los datos de entrada y salida esperada con la pregunta, ¿has escrito? – shahkalpesh
DATEDIFF en minutos y luego la división entera por 60? –