我有一个表格,我想将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。
如果可能,请分享查询以解决此问题。
答案 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;
}
但是你究竟是怎么做的,取决于你是在做一个脚本,一些应用程序和你正在使用的语言...