C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[12881] Re:Re:[질문] DBGrid 에서.
초보 [] 839 읽음    2001-11-20 17:23
님의 방식대로 할 경우...

SEC_TO_TIME
TIME_TO_SEC

은 없는 함수라도 나오는군요..

ㅡ.ㅡ;

V6 님이 쓰신 글 :
: Query를 사용한 방법입니다.
:
: TDataSet *pDS;
: pDS = DBGrid->DataSource->DataSet;
:
: pDS->Close();
: pDS->SQL->Clear();
: pDS->SQL->Add("SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(DATETIME))) FROM 테이블명 WHERE 조건식");
: pDS->ExecSQL();
: AnsiString SumTime = pDS->Fields->Fields[0]->AsString;
:
: Query말고 다른 컴포넌트를 사용하시면 아래 SQL 명령어를 사용하시면 됩니다.
: 자세히 보시면 아주 쉽습니다.
:
: SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(DATETIME))) FROM 테이블명 WHERE 조건식
:
: TIME_TO_SEC(DATETIME) //여기서 DATETIME 은 필드명
: 시간을 초로 환산해 주는 SQL 함수입니다.
:
: SUM(필드명)
: 필드명의 레코드 합을 구하는 SQL 함수입니다.
:
: SEC_TO_TIME(초)
: 초를 시간으로 환산해 주는 SQL 함수입니다.
:
: 위 함수 세가지를 한꺼번에 사용한 겁니다.
:
: #주의 : 이렇게 하면 쿼리된 실제 필드명이 SEC_TO_TIME(SUM(TIME_TO_SEC(DATETIME))) 이렇게 나옵니다.
:
: 그리고 쿼리된 값을 읽을 때는 두가지 방법이 있습니당.
:
: 첫번째
: pDS->Fields->Fields[0]->AsString;
: 이 말은 쿼리결과 값의 첫번째(0) 필드의 값을 스트링으로 읽은거구요.
:
: 두번째는 실제 필드명을 대입하는겁니다. 필드명이 너무 길어서...
: pDS->Fields->FieldByName("SEC_TO_TIME(SUM(TIME_TO_SEC(DATETIME)))")->AsString;
:
:
:
:
: 아래는 MySQL에서 쿼리한 값을 화면저장한 내용 입니다. 참고하세용.
:
: mysql> SELECT DATETIME FROM test WHERE POS = 'X';
: +----------+
: | DATETIME |
: +----------+
: | 10:12:20 |
: | 11:22:43 |
: | 09:02:03 |
: | 02:42:22 |
: +----------+
: 4 rows in set (0.00 sec)
:
: mysql> SELECT TIME_TO_SEC(DATETIME) FROM test WHERE POS = 'X';
: +-----------------------+
: | TIME_TO_SEC(DATETIME) |
: +-----------------------+
: |                 36740 |
: |                 40963 |
: |                 32523 |
: |                  9742 |
: +-----------------------+
: 4 rows in set (0.00 sec)

: mysql> SELECT SUM(TIME_TO_SEC(DATETIME)) FROM test WHERE POS = 'X';
: +----------------------------+
: | SUM(TIME_TO_SEC(DATETIME)) |
: +----------------------------+
: |                     119968 |
: +----------------------------+
: 1 row in set (0.00 sec)

: mysql> SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(DATETIME))) FROM test WHERE POS = 'X';
: +-----------------------------------------+
: | SEC_TO_TIME(SUM(TIME_TO_SEC(DATETIME))) |
: +-----------------------------------------+
: | 33:19:28                                |
: +-----------------------------------------+
: 1 row in set (0.00 sec)
:
:
:
:
:
: 이상 V6 였습니다.
: 즐프프프프
:
:
:
:
:
:
: 초보 님이 쓰신 글 :
: :
: :  DATA Field 는 DATETIME입니다.
: :
: :  그중에 시간 정보만 입력이 됩니다.
: :
: :  특정 기간 동안 이 시간 필드의 값들을 더해서 출력을 하고자 하는데..
: :
: :  그냥 더해버리면..
: :
: :  00:00:00 으로만 나타나버리고
: :
: :  제가 원하는
: :
: :  234:23:00 (234시간:23분:00초) 이렇게 나타나지가 않네요.
: :
: :  어케 해야 할까요..
: :
: :  고수님들의 도움 부탁드립니다.

+ -

관련 글 리스트
12834 [질문] DBGrid 에서. 초보 804 2001/11/19
12858     Re:[질문] DBGrid 에서. V6 1197 2001/11/20
12881         Re:Re:[질문] DBGrid 에서. 초보 839 2001/11/20
12895             Re:Re:Re:[질문] DBGrid 에서. V6 1019 2001/11/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.