|
제가 딴 생각을 한 모양이군요. 그 명령어는 MySQL에 있는 명령어인데.. 히쭉
사용하시는 DB가 뭔가요?
초보 님이 쓰신 글 :
: 님의 방식대로 할 경우...
:
: 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초) 이렇게 나타나지가 않네요.
: : :
: : : 어케 해야 할까요..
: : :
: : : 고수님들의 도움 부탁드립니다.
|