十进制到HH:MM转换

时间:2012-03-01 09:44:35

标签: sql-server

我有一个表格,我想将Duration列的数据类型Decimal更新为HH:MM格式。

ECode        Duration
101           101.75
101           69.56
102           54.60
103           54.97

输出应该是这样的:

ECode        Duration
101           102.15
101           69.56
102           55
103           55.37

我们正在计算小数点后的时间,如果小数点后60或更多,那么我们将在十进制之前加1,并且在从60减去之后剩下我们显示的原样。

例101.75,这里在小数75之后是首先我们检查它是否大于或等于60.如果是,则减去60并在小数之前加1并将剩余的15小数后。所以结果应该是102.15。

如果可能,请分享查询以解决此问题。

3 个答案:

答案 0 :(得分:3)

这应该这样做:

update thistable 
set    duration = duration + 0.4 
where  duration - floor(duration) >= 0.6

答案 1 :(得分:2)

update YourTable set
  Duration =  floor(Duration) + 
              cast(((Duration - floor(Duration))*100) as int) / 60 +
              cast((cast((Duration - floor(Duration)) * 100 as int) % 60) as float) / 100

答案 2 :(得分:0)

我想你会做类似的事情(某种“伪”代码):

String reorder(String x) {
  String parts[] = x.split(.);
  if(parts.length < 2) x;
  // eval as integers:
  if(parts[1] < 60) return x;
  if(parts[1] > 60) return (parts[0]+(parts[1]/60))+"."+(parts[1]%60);
  return parts[0]+1;
}

但是你究竟是怎么做的,取决于你是在做一个脚本,一些应用程序和你正在使用的语言...