0

私は sql-server 2005 データベースに時刻を decimal(9,2) 列として保存しています。

時間は、
Time timeInDecimal
1H 20Min 1.33
1H 30Min 1.50
のように 表されます。

時間全体を除く分数が 5 で均等に分割されていないかどうかを確認する簡単な方法を探しています。
私が見つけたい値は、時間が 1 時間 23 分ではなく 1 時間 25 分です。
時間の分の部分を比較したくありません。

私が今やっている方法は次のとおりです。

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

しかし、これに対処する理想的な方法とは思えません。

これにはモジュロ演算子を使用できるように感じますが、どうすればよいでしょうか? それとももっと良い方法がありますか?

迅速な回答を願っています。
よろしく
アンドレアス

4

1 に答える 1

3

モジュラス演算子を2回使用します。

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

それは:

  1. 小数部分を取得し、分に変換します。
  2. 最も近い分に丸めます(19.80ではなく0.33時間-> 20分)。
  3. それが5で割り切れるかどうかを確認します。
于 2012-05-11T05:27:30.857 に答える