我有一个带有时间戳的表,我想将该表划分为一个小时的间隔,从现在开始向后几个小时。我无法使用 T-SQL 获得所需的结果DATEDIFF http://msdn.microsoft.com/en-us/library/ms189794.aspx函数,因为它计算两个日期之间分针经过 12 的次数 - 我想要分针经过的次数现在在哪里时间戳和现在之间。
在 T-SQL 中是否有一种简单的方法可以做到这一点?
Update:为了回应评论,这里有一些示例数据、我当前使用的查询和我得到的结果,以及我想要的结果。
样本数据:
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 ...
Results:
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)