2014-01-17 6 views
0

나는 하루 종일 직원 수를 얻으려고합니다. 내가 당기는 테이블은 시간/분/초와 긴 날짜 양식을 가지고 있고 그들이 내가 b/c 거래를 계산할 수없는 이유는 그들이 긴 날짜 시간의 b/c 개별 레코드로 취급되고 있다고 생각합니다.날짜를 분과 초로 변환하는 방법 SSMS

그래서 선택 쿼리에서 날짜를 변환하려고 시도했지만 오류 메시지가 나타납니다. 날짜에 메서드를 호출 할 수 없습니다.

여기 내 코드

SELECT ITR_EmployeeID, 
CONVERT(DATE, ITR_TransDate, 1) AS TransDate, 
COUNT(ITR_TransType) AS TC 
FROM dbo.ITR 
WHERE (ITR_EmployeeID IN (N'sweda', N'bakja', N'gebwa')) 
AND (ITR_TransType LIKE N'PO Inspect') 
AND (ITR_TransDate BETWEEN @FromDate AND @ToDate) 
GROUP BY ITR_EmployeeID, ITR_TransDate 

내가 무엇을 찾고 있어요 것은 Transtype입니다

감사를 날짜별로 계산 및 직원 ID

에 의해 그룹화 할 수 있습니다!

+0

Microsoft SQL Server 또는 MySQL? –

+0

SQL Server 2008, 감사합니다! – jballard81

+0

당신은 단지 'CONVERT (DATE, ITR_TransDate)'를 할 수 없습니까? 그리고 나서 당신은'ITR_TransDate' 대신 그 표현식에 따라 그룹화 할 필요가 있습니다. 또한 'DATETIME' 열을 필터링하는 경우 날짜 범위에 대해 BETWEEN을 사용해야합니다. – Lamak

답변

4

일부보기 또는 쿼리 디자이너가 아닌 쿼리 창에서이 작업을 수행해야합니다. 그것들을 사용하지 마십시오. 부디.

SELECT 
    ITR_EmployeeID, 
    CONVERT(DATE, ITR_TransDate) AS TransDate, 
    COUNT(ITR_TransType) AS TC 
FROM dbo.ITR 
WHERE (ITR_EmployeeID IN (N'sweda', N'bakja', N'gebwa')) 
AND (ITR_TransType LIKE N'PO Inspect') 
AND (ITR_TransDate >= @FromDate AND ITR_TransDate < DATEADD(DAY, 1, @ToDate)) 
GROUP BY ITR_EmployeeID, CONVERT(DATE, ITR_TransDate); 

은 (쿼리 창에서 다시 아닌 버그 시각 디자이너) SQL Server 관리 Studio에서 올바른 결과 작업이 쿼리를 가져옵니다. THEN 구현하려는 응용 프로그램 코드에서 작동하게하고 해당 문제를 별도로 처리하거나 저장 프로 시저를 만들고 T-SQL 쿼리 텍스트를 다른 응용 프로그램에 통합하는 데 문제가 발생하지 않도록하십시오. .

+0

환상적! 고맙습니다. 나는 또한 블로그 링크를 정말로 바르게 평가한다, 나는 그것이 다음 몇 시간 동안 그것을 읽을 것 인 것처럼 보인다!또한, 나는 SSMS를 사용하는 것을 정말로 좋아하지 않는다고 말할 수 있습니다. 다른 소프트웨어를 추천 할 수 있습니까? 나는이 질문을 일으킬 수있는 쿼리 디자인 창을 사용할 수 있는지 전혀 몰랐습니다. – jballard81

+0

@ jballard81 감사합니다! 해당 게시물이 마음에 들면 [this one] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/16/bad-habits-to-kick-mishandling-date-range-queries)도 좋습니다. .aspx) –

관련 문제