2013-05-03 1 views
3

나는 분으로 구성되는 열을 가지고 있습니다. 몇 분의 칼럼을 일,시, 분만 보여주는 하나의 칼럼으로 나누는 간단한 방법이 있습니까?tsql에서 일, 시간 및 분으로 분을 분할하는 방법

DURATION    
----------- 
67   ==> 1 hour, 7 minutes 
1507   ==> 1 day, 1 hour, 7 minutes 
23   ==> 23 minutes 

나는 해결책을 찾기 위해 인터넷 검색을했지만 나는 비슷한 해결책을 찾지 못했습니다. 이 보고서를 보고서에 표시하고 싶지만이 열을 해결할 수있는 방법을 찾으려면 의미있는 것으로 보입니다. 기간 열의 계산은 이와 같습니다.

avg(datediff(MINUTE, ei.SentDate, eo.SentDate)) over(partition by ei.mailbox) as DURATION 
+2

'분'이 분 수이면'minutes % 60 '은 분만 줄 것이며'(분/60) % 24'은 시간 만 줄 것이며'분/(60 * 24)는 일만 줄 것입니다. (힌트 : %는 나눗셈 이후에 나머지를 제공하는 모듈러스 연산자입니다.) 이제 멋진 문자열 연결/포맷을 수행하십시오 : – Patashu

답변

6

구글 검색은 여기 http://www.sqlservercentral.com/Forums/Topic490411-8-1.aspx

나를 착륙이 가

그럼 그냥

를 작동 할 분을 통과 ... 난 그냥 작업을 테스트하는 ...

Declare @theMinutes int 
Set @theMinutes = 67 

Select @theMinutes/1440 as NoDays -- 1440 minutes per day 
     , (@theMinutes % 1440)/60 as NoHours -- modulo 1440 
     , (@theMinutes % 60) as NoMinutes -- modulo 60 
+0

고맙습니다. 시도해 보겠습니다. – cihata87

1
create FUNCTION fun_Date_Friendly (@minutes int) 
RETURNS nvarchar(100) 
AS 
BEGIN 
    return CASE 
    when @minutes < 60 then cast(@minutes as varchar(10)) + ' Min' 
    when @minutes < 1440 then cast(@minutes/60 as varchar(10)) + ' Hr, ' + cast(@minutes%60 as varchar(10)) + ' Min' 
    else cast(@minutes/(1440) as varchar(10)) + ' Days, ' + cast((@minutes%1440)/60 as varchar(10)) + ' Hr, ' + cast(((@minutes%1440)%60) as varchar(10)) + ' Min' 
    end 
end 
go 
말한다
select dbo.fun_Date_Friendly(20) val 
관련 문제