0

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

时间表示为
Time timeInDecimal
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')

但这似乎并不是处理这个问题的理想方法。

感觉我可以为此使用模运算符,但是如何?还是有更好的方法?

希望得到一个快速的答复。
亲切的问候
安德烈亚斯

4

1 回答 1

3

使用模运算符,两次:

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

这将:

  1. 获取小数部分并将其转换为分钟。
  2. 将其四舍五入到最接近的分钟(0.33 小时 -> 20 分钟,而不是 19.80)。
  3. 检查它是否能被 5 整除。
于 2012-05-11T05:27:30.857 回答