당신은 소수로 시간을 저장과 상처의 세계에 대한에있어. 내가 본 방식대로, 당신의 시간은 10 진수 형식으로 저장되므로 1 시간 30 분이 1.3으로 정확합니까?
0.90이라는 의미의 90 분으로 인해 33.90이 34.30으로 바뀔 것으로 예상하고 있습니다 만, 사소한 문제를 넘어서는 저장 형식의 거대한 실패를 고려한 적이 있습니까? 이 시나리오를 고려하십시오.
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 분이어야한다!!
어쨌든, 가지고있는 것을 사용하려면이 기능이 필요합니다. 최대한 빨리 DB 구조를 수정하십시오.
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을 얻습니까? 10 진수 필드입니까? –
varchar 필드 @sum varchar (50) – hmk
WorkingHours 데이터 유형은 무엇입니까? –