日期:2014-05-17  浏览次数:20632 次

怎么在sql server内得到精确的时间间隔?
sql server有一个datediff函数,但是这个函数不仅返回时间间隔,还返回经过的时间边界
比如
datediff(hh,"2012-10-1 08:59:00","2012-10-1 09:01:00")

这两个时间的真实时间间隔肯定是没有1小时的,但是这个函数会返回1,因为经过了它经过了小时和小时之间的时间边界09:00:00,那我要怎么才能获得精确的和时间间隔呢

------解决方案--------------------
精确度越粗略,得到的值越不准确,降低粒度是目前唯一的办法,本身你也不是想精确多少个小时,如果你用HH但是想精确的话,那估计结果是0,也不是你想要的结果。
------解决方案--------------------
引用:
Quote: 引用:


--秒
SELECT datediff(ss,'2012-10-01 08:59:00','2012-10-01 09:01:00')
--分鍾
SELECT datediff(minute,'2012-10-01 08:59:00','2012-10-01 09:01:00')

你还没认真看我的帖子就回帖,我说了,过了时间边界会造成返回值+1,比如8:59到9:10分,间隔没一小时,但是越过了9:00的时间边界,如果返回单位为小时,那就是1,这个问题怎么解决,难道要我用更小的单位得到的差值再算一遍?


你说对了,一般在处理这个时间差的时候,都会用更小的单位来计算,然后再进行转换,比如间隔为2分钟:

SELECT datediff(second,'2012-10-01 08:59:00','2012-10-01 09:01:00') /60
/*
2
*/