我有一个带有时间戳的表,我想将这个表划分为一个小时的间隔,从现在开始,然后倒退几个小时。我无法使用 T-SQL DATEDIFF函数获得所需的结果,因为它会计算分针在两个日期之间经过 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 ...
结果:
时间戳差异 ********* **** 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
我宁愿拥有的:
-- 时间是现在,举例来说,13:40 时间戳差异 ********* **** 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 或 3 -- 边缘情况,我真的不在乎哪个 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
我已经用+1
. 另外,我真的不在乎这是 0 索引还是 1 索引,但基本上,如果现在是 13:40,我希望获得相同值的时间跨度是
12:40-13:40 1 (或 0) 11:40-12:40 2(或1) 10:40-11:40 3(或2) 09:40-10:40 4(或3)