2012-06-28 7 views
-2

SQL에서 사용 된 시간의 소계를 얻으려면 어떻게해야합니까?SQL에서 소계 시간을 얻는 방법

이것은 내 쿼리의 간단한 예입니다. 총은 시간에 따라해야

`SELECT 
    A.INDX, B.CLIENTNAME, C.PROJECTNAME, D.NAME, 
    CONVERT(CHAR(10), A.CDATE, 101) [DATE], 
    CONVERT(TIME(0), A.START_TIME, 108) [START], 
    CONVERT(TIME(0), A.END_TIME, 108) [END], 
    CONVERT(TIME(0), (A.END_TIME - A.START_TIME), 108) [HOURS_WORKED] 
FROM 
    LOGSHEET A, CLIENTS B, PROJECTS C, DEVELOPERS D 
WHERE B.CLIENTNO = 1 
    AND C.PROJECTID = 11 
    AND D.USERID = 1` 

내 logsheet 테이블을 떨어 뜨 일을 내가

이름을 필요한 기본적

`BEGIN CREATE TABLE [dbo].[LOGSHEET](
[INDX] [int] IDENTITY(1,1) NOT NULL, 
[CLIENTNO] [int] NULL, 
[PROJECTID] [int] NULL, 
[USERID] [int] NULL, 
[CDATE] [datetime] NULL, 
[START_TIME] [datetime] NULL, 
[END_TIME] [datetime] NULL) ON [PRIMARY]END GO` 

| 시작 시간 | 종료 시간 | Hours_worked |

에이지 ...... ... | 07:00:00 | 07:15:00 | 00:15:00 |

에이지 ..... | 07:00:00 | 07:15:00 | 00:15:00 |

  Total: |00:30:00| 
+1

테이블에 전혀 참여하지 않았습니다. ..... 모든 테이블간에 데카르트 제품을 정말로 원하십니까? –

+1

예전 스타일의 조인 사용을 중단하십시오 (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style- joins.aspx). 또한 start_time -> end_time이 자정을 넘으면 어떨까요? –

+0

미안 테이블에 가입하지 못해 미안합니다. 이것은 매우 정숙한 프로젝트입니다. 거친 계획을 세우는 것입니다. Aaron 시간은 07:00 - 16 : 30 –

답변

0

이 좋아 잘 난 그냥

protected string GetTotal() { 
    string userid = Session["id"].ToString(); 
    string s = null; 


    s = "SELECT SUM(MINUTES) "; 
    s += "FROM LOGSHEET "; 
    s += "WHERE USERID = @p0 "; 

    String[] pr = new String[1]; 
    pr[0] = userid; 

    return cQ.GenQuery(s, pr); 
} 
을 실행 단지 필드 "분"을 추가하고
if (e.CommandName == "Stop") { 
    int row = int.Parse(e.CommandArgument.ToString()); 
    string indx = GridView1.Rows[row].Cells[1].Text; 
    string s = null; 
    s = "UPDATE LOGSHEET "; 
    s += "SET MINUTES = (DATEPART(HOUR,TIME_SPENT)*60)+(DATEPART(MINUTE,TIME_SPENT)) "; 
    s += "WHERE INDX = @p0 "; 


    String[] pr = new String[1]; 
    pr[0] = indx; 

    cQ.execSql(s, pr); 

    } 
} 

마녀가 다음 날 (int)로 분을 제공하고 C#

에서 쿼리를 실행하여 내 문제에 대한 해결책을 알아 냈어

label5.text = GetTotal(); 

다음과 터져 죽자는 분 proble에서 보낸 모든 시간의 합계를 완료 m은

해결이 C# 프로그램입니다하지만 난 그것을 도움을 준 사람들에게

감사를 해결하기 위해 SQL 쿼리를 필요!

0
DECLARE @start_time DATETIME, @end_time DATETIME; 

SELECT @start_time = '20120621 22:05', @end_time = '20120622 06:47'; 

SELECT CONVERT(TIME(0), DATEADD(MINUTE, DATEDIFF(MINUTE, @start_time, @end_time), 0)); 

결과 : 그래서

08:42:00 

당신이 테이블에 데이터가 있다면, 그것은 매우 유사하다 :

SELECT CONVERT(TIME(0), DATEADD(MINUTE, 
    DATEDIFF(MINUTE, A.start_time, A.end_time), 0)) AS [HOURS_WORKED] 
FROM ... 

당신은 추가처럼 멀리 가지에서 유지해야하며, 날짜/시간 유형을 뺀 다음 DATEADD과 같은 내장 함수를 사용하십시오. 이 약식은 datetime/smalldatetime과 작동하지만 새로운 유형에서는 문제가 될 수 있습니다.

+0

과 같은 거래 시간 전용 소규모 사무실 앱이므로 오히려 지나간 자정이 아닙니다. 그 지금과 다음 시간하지만 지금 질문은 여전히 ​​어떻게 시간 근무 필드에 총 시간을 추가 할 수 있습니까? –

+0

샘플 데이터와 원하는 결과를 제공해야합니다. 가짜 쿼리에서 "총 시간"이 의미하는 바를 말할 수는 없습니다. http : //dba.blogoverflow를 참조하십시오.co.kr/2012/06/help-us-help-you/ –

+0

곧장 앞으로 [HOURS_WORKED]에서 SUM을 얻으려면 어떻게해야합니까? 잘못된 열 이름이 표시됩니다. –

관련 문제