2012-03-01 3 views
1

У меня есть таблица, и я хочу обновить столбец Duration, который имеет тип данных Decimal - HH:MM.Десятичное значение для ЧЧ: 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 или более 60 будут там мы добавляем 1 до того десятичного и оставшихся после вычитание из 60 мы показываем как есть.

Пример 101.75, здесь после десятичного числа 75 существует так, что мы сначала проверяем, что оно больше или равно 60. Если да, то вычтите 60 и добавьте 1 до десятичного числа и поместите оставшиеся 15 после десятичной. Таким образом, результат должен быть 102.15.

Пожалуйста, по возможности поделитесь запросом, чтобы решить эту проблему.

+1

Что вы пробовали? Где вы застряли? Также: какая ** версия ** SQL Server ?? 2000, 2005, 2008, 2008 R2? –

ответ

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; 
} 

Но как именно вы это делаете, зависит ли вы» повторное выполнение в сценарии, какое-то приложение и язык, который вы используете ...

3

Это следует сделать это:

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

+1 Я почти ниспровернулся, думая, что вы полностью упустили точку. –

+0

Решите мою проблему отлично. – Dharmendra

+0

@Dharmendra Pls принимает ans, если это решит вашу проблему. –

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 
+0

. Решите мою проблему, но не дайте точный результат в десятичном формате, так как результат будет округленным. Спасибо за логику, и это помогает мне ... – Dharmendra

+0

Большое спасибо @Mikael, это тоже решило мою проблему –

Смежные вопросы