你帶來的傷害的世界與儲存倍小數。我看到它的方式,你的時間以十進制形式存儲,因此1小時30分鐘進入1.3,對嗎?
你希望33.90轉向34.30,由於0.90意味着90分鐘,但是,你有沒有考慮超出了些許問題,存儲格式collossal失敗?考慮這種情況:
create table ConsultantTimeSheet (WorkingHours decimal(5,2));
insert ConsultantTimeSheet select 1.3;
insert ConsultantTimeSheet select 1.3;
insert ConsultantTimeSheet select 1.3;
insert ConsultantTimeSheet select 1.5;
Declare @sum varchar(50);
Set @sum = (select SUM(ct.WorkingHours) from ConsultantTimeSheet ct);
select @sum;
--- output
5.40
因爲.40不高於60,所以沒有轉換。但是,它應該是6小時20分鐘!
。不管怎麼樣,你有什麼工作,你需要這個。請儘早修復你的數據庫結構。
Declare @sum varchar(50);
Set @sum = (select 1.0*floor(RawDecimal)+(RawDecimal-1.0*floor(RawDecimal))*60/100
from (
select RawDecimal=sum(1.0*floor(WorkingHours)) + sum(WorkingHours-floor(WorkingHours))/60*100
from ConsultantTimeSheet ct
where ConsultantID = @Consultantid
and ct.Status = @status
and ct.StartDate = @StartDate
and ct.EndDate = @Enddate) x);
select @sum;
--- output
6.2
你怎麼33.90?是一個十進制字段? –
varchar字段Declare @sum varchar(50) – hmk
什麼是WorkingHours數據類型? –