|
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초) 이렇게 나타나지가 않네요.
:
: 어케 해야 할까요..
:
: 고수님들의 도움 부탁드립니다.
|