检查分钟数不均匀除以5

时间:2012-05-11 05:18:14

标签: sql sql-server-2005

我在sql-server 2005数据库中将时间存储为十进制(9,2)列。

时间表示为
时间间隔内 1H 20Min 1.33
1H 30Min 1.50
等等

我正在寻找一种简单的方法来检查除了整个小时之外的分钟数是否均匀分为5 我希望找到的值是时间是1H:23Min而不是1H:25MIN 我只是想比较一下这部分时间。

我现在的做法是:

RIGHT(CONVERT(varchar(5),DATEADD(minute,ROUND(timeInDecimal * 60,0),0),108),1) not in ('0','5')

但它似乎不是解决这个问题的理想方式。

感觉我可以使用modulo运算符,但是怎么样? 或者有更好的方法吗?

希望快速回答​​。
亲切的问候 安德烈亚斯

1 个答案:

答案 0 :(得分:3)

使用模数运算符,两次:

ROUND((timeInDecimal % 1) * 60, 0) % 5 <> 0

那将:

  1. 获取小数部分并将其转换为分钟。
  2. 将其舍入到最近的分钟(.33小时 - > 20分钟,而不是19.80)。
  3. 检查是否可被5整除。