Tom*_*han 5 t-sql sql-server datetime datediff
我有一个时间戳表,我想这个表划分为长达一小时的间隔,起始于现在和倒退了几个小时.我无法得到我需要与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
Run Code Online (Sandbox Code Playgroud)
当前查询:
SELECT TimeStamp, DATEDIFF(HOUR, TimeStamp, CURRENT_TIMESTAMP) AS Diff FROM ...
Run Code Online (Sandbox Code Playgroud)
结果:
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)
你能不能只使用DATEDIFF(minute,..然后将结果除以60并取整数值.例如
SELECT DATEDIFF(minute, '2010-07-20 06:00', GETDATE())/60
Run Code Online (Sandbox Code Playgroud)
我相信这将被隐式地转换为int,因为datediff返回一个int,它给出整个小时没有舍入.
要使用您更新的帖子中的确切查询:
SELECT TimeStamp, (DATEDIFF(minute, TimeStamp, CURRENT_TIMESTAMP) /60) AS Diff FROM ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4035 次 |
| 最近记录: |