2012-12-17 3 views
2

SQL Server 2008에서 저장 프로 시저의 일부로 DATEDIFF() 호출을 만들고 있는데,이 호출은 잠재적으로 3 초 이하의 작은 값을 반환합니다. 형식을 MM : SS (예 : 00 초, 3 초)로 지정하고 싶습니다.초를 반올림하지 않고 tsql DATEDIFF를 호출합니다.

DATEDIFF(mi, SELECT MAX(startDate) FROM myTable , SELECT MAX(EndDate) FROM myTable)

그러나이 가장 가까운 분으로 내림이었다, 따라서 초 값을 삭제 : 나는 원래 분 안에 전화를 사용하고 있었다. DATEDIFF를 사용하여 위에서 지정한 형식을 어떻게 얻을 수 있습니까? 가장 가까운 두 번째로

답변

10

:

DATEDIFF(ss, SELECT MAX(startDate) FROM myTable, SELECT MAX(EndDate) FROM myTable) 

Ref.

참고 : DATEDIFF은 '형식'을 제공하지 않습니다. 그냥 정수를 반환합니다. 따라서 적절하게 형변환/형식을 지정해야합니다.

select convert(char(8), dateadd(ss, DATEDIFF(ss, SELECT MAX(startDate) FROM myTable, 
               SELECT MAX(EndDate) FROM myTable)), 
       cast(0 as DateTime)) , 108) 

예 :

나는 쉽게 얻을 것이다 형식 108으로 CAST을 사용하는 가장 가까운 의심

select convert(char(8), dateadd(ss, DATEDIFF(ss, '2012-12-16 12:00:00', 
               '2012-12-16 12:13:09'), 
           cast(0 as DateTime)), 108) 

반환 :

00:13:09 

[참고 : TSQL: Round to Nearest 15 Minute Interval : 당신이 가장 가까운 삼초에 반올림하려면이 수정할 수]를
관련 문제