Mam mały problem z bazą danych na MySQL'u:
Mam tabele która przechowuje długość trwania pewnego procesu w postaci godziny rozpoczęcia i zakończenia. W jaki sposób zsumować łączny czas wykonywania jakiejś czynności:
Struktura tabeli :
CREATE TABLE akcja
(
akcja_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
proces_id INT UNSIGNED NOT NULL,
data DATE NOT NULL,
godzina_p TIME NOT NULL,
godzina_k TIME NOT NULL,
PRIMARY KEY (akcja_id),
INDEX (proces_id),
FOREIGN KEY (proces_id) REFERENCES proces(proces_id) ON UPDATE NO ACTION ON DELETE NO ACTION
) TYPE=INNODB;
Przykładowe dane :
akcja_id proces_id data godzina_p godzina_k
1 1 2005-07-11 02:30:00 21:00:00
2 2 2005-07-11 15:00:00 15:15:00
3 1 2005-07-15 05:00:00 16:15:00
4 1 2005-07-16 23:15:00 08:15:00
5 2 2005-07-20 23:45:00 00:00:00
1)Jak uzyskać długość poszczególnych akcji tzn.:
akcja_id proces_id data czas
1 1 2005-07-11 1800
2 2 2005-07-11 0000
3 1 2005-07-15 1100
4 1 2005-07-16 0900
5 2 2005-07-20 0000
Gdy wykorzystam do tego funkcję SUBTIME lub TIMEDIFF :
SELECT akcja_id, proces_id, data, TIMEDIFF(godzina_k, godzina_p)
FROM akcja;
to w przypadku przechodzenia przez godzinę 0000 zwraca NULL albo ujemną godzinę ??
2)Jak uzyskać łączny czas wykonywania poszczególnych procesów tzn.:
proces_id czas
1 3800
2 0000