2012-07-16 2 views
0

나는 AverageTime가 초에서 오는이 쿼리에서이 쿼리SQL Server 2008 : 평균 밀리 초 타이밍은

select 
    substring((convert(varchar, PostTime, 120)), 1, 11), 
    AccountNumber, 
    sum(Cast(datediff(ss, TranTime, AuthProcessedTime) as money))/COUNT(1) AverageTime, 
    COUNT(1) NumberOfCount 
from 
    AuthTransactions WITH (NOLOCK) 
group by 
    substring((convert(varchar, PostTime, 120)), 1, 11), AccountNumber 

있습니다. 대부분의 시간 결과가 밀리 초 단위로 표시되기 때문에 다음 형식으로보고 싶습니다. HH:MM:SS.msmsms. 결과를이 형식으로 볼 수 있습니까?

미리 감사드립니다.

+0

http://msdn.microsoft.com/de-de/library/ms189794.aspx (datepart 밀리 초) – stb

+0

@ Rikky 내 대답을 확인합니까? –

답변

0

datediff(ss,TranTime,AuthProcessedTime) 에서 ss를 ms로 변경하십시오. ms는 밀리 초 동안 사용됩니다. 이

select substring((convert(varchar,PostTime,120)),1,11), 
AccountNumber, 
sum(Cast (datediff(ms,TranTime,AuthProcessedTime) as money))/COUNT(1) 
AverageTime,COUNT(1) NumberOfCount from AuthTransactions 
WITH(NOLOCK) group by 
substring((convert(varchar,PostTime,120)),1,11),AccountNumber 
+0

다른 명백한 오류를 정정하지 않으면이 답변을 투표하기가 어렵습니다. – ErikE

+0

@ErikE 어떤 오류가 있습니까? 사용자는 그/그녀는 밀리 초 단위로 대답을 원하므로 ss 대신 mm을 사용할 것을 제안합니다. 오류를 말해 자신을 해결할 수 있도록하십시오. –

+0

@waqar plz 다시 질문보기. 내가 업데이트했습니다. – Rikky

2

같은

이 시도 :

  • 항상 이의 길이를 지정 : 나는 제거 또는 수정 쿼리 몇 가지 문제가

    SELECT 
        Convert(date, PostTime) PostDay 
        AccountNumber, 
        Avg(Datediff(ms, TranTime, AuthProcessedTime) * 1.0) AverageTime, 
        Count(*) NumberPerDay 
    FROM 
        dbo.AuthTransactions 
    GROUP BY 
        Convert(date, PostTime), 
        AccountNumber 
    

    했다 char 데이터 형식

  • 시간 부분을 제거하기 위해 날짜를 문자열로 변환하지 마십시오. DateDiffDateAdd을 사용하거나 SQL 2008을 사용하고 있으므로 date으로 변환 할 수 있습니다.
  • 실제로 무엇을하고 있는지 알지 못하면 WITH (NOLOCK)을 사용하지 마십시오. 그것은 결국 당신을 물 것입니다.
  • 돈으로 변환하지 마십시오. 그것은 단지 이상합니다. 그것은 소수점 2 자리를 가지고 있고, 정말로 원한다면 10 진수 ([something], 2)로 변환하십시오. 그렇지 않으면 누군가가 코드를보고 "도대체 뭐라 구요?" 그게 당신이 원한다고하더라도, 당신을 위해 그것을 고칠 수 있습니다. 내가 보여준 것처럼 1.0을 곱하면 충분하고 정확한 십진 변환을 얻을 수 있습니다.
  • 개체의 스키마를 지정하십시오. 작지만 성능 향상에 도움이되며 (잘못 기억하지 못하는 경우) 그렇게하지 않으면 불필요한 계획 재 컴파일이 발생할 수 있습니다.