2012-05-11 78 views
0

我有一個時間作爲十進制(9,2)列存儲在sql-server 2005數據庫中。檢查幾分鐘不等於5

時間表示像
時間timeInDecimal
1H分鐘20分鐘1.33
1H 30MIN 1.50

I'm尋找一種簡單的方法來檢查是否除了整個小時的分鐘數不是被5等分。
我希望找到的值是時間爲1H的值:23Min但不是1H:25MIN。
我只是想比較一下時間的一小部分。

我現在做的方式是:

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

但它確實很難似乎是解決這個問題的理想方式。

感覺我可以使用模運算符爲此,但如何? 或者還有更好的方法嗎?

希望能夠快速回答。
親切的問候
安德烈亞斯

回答

3

使用模運算,兩次:

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

將:

  1. 獲取小數部分並將其轉換爲分鐘。
  2. 將其舍入到最接近的分鐘(.33小時 - > 20分鐘,而不是19.80)。
  3. 檢查是否可以被5整除。
+0

太棒了!奇蹟般有效! – Andreas