Avatar billede pluth Nybegynder
24. oktober 2003 - 10:04 Der er 9 kommentarer og
1 løsning

Problem med gennemsnit i tidsformat

Hej

Jeg har en del tids enheder i en MySQL database som ser ud som dette, 00:02:59. Jeg skal have fundet gennemsnittet af tiden. Et eks. kunne være, at hvis jeg kun havde 3 poster i tabelen, kunne være:

00:02:20
00:02:30
00:02:20

Det ville give et gennemsnit på 00:02:20. Nogen som kan hjælpe med en sql kode som kan få det til at virke ?
Avatar billede detox Nybegynder
24. oktober 2003 - 10:40 #1
Hvordan kan du få det til: 00:02:20?
Avatar billede amix Nybegynder
24. oktober 2003 - 10:46 #2
Måske skulle du lave dem om til timestamps for at bedre kunne sammenligne dem... Dog har jeg ikke selv prøvet dette.

Men altså du kan få en data til univ timestamp ved at bruge UNIX_TIMESTAMP( ). Herved mener jeg så at du kan lægge alle timestamps sammen og dividere dem igen..

Når du så har sammenlignet alle dine data sakl du så bruge FROM_UNIXTIME( ) for at konvertere tilbage far timestamp.

Håber det hjalp.

Således kan et php eksempel se ud:
$a = strtotime("00:02:20");
$b = strtotime("00:02:30");
$c = strtotime("00:02:20");

$resultat = $a + $b + $c;
$gennemsnit =  $resultat / 3;
echo strftime("%H:%M:%S", $gennemsnit);
//Den printer så 00:02:23..
Avatar billede detox Nybegynder
24. oktober 2003 - 10:47 #3
Hvis feltet havde været af typen DATETIME eller TIMESTAMP kunne du:

SELECT DATE_FORMAT(avg(dato_felt), '%H:%i:%s') FROM tabel

Hvilket vil give det korrekte resultat: '00:02:33'), men hvis det er af typen TIME (som det ser ud til) ved jeg ikke lige.
Avatar billede detox Nybegynder
24. oktober 2003 - 10:51 #4
Ja, undskyld '00:02:23' selvfølgelig.
Avatar billede amix Nybegynder
24. oktober 2003 - 11:16 #5
Hvorfor er det enlig man ikke kan bruge FROM_UNIXTIME( ) o.lign. på TIME datatypen??
Avatar billede detox Nybegynder
24. oktober 2003 - 11:44 #6
Ja, det synes jeg osse er en mangel. Det virker hvert falf ikke her (MySQL 4.1.0-alpha-max-nt).
Avatar billede amix Nybegynder
24. oktober 2003 - 12:58 #7
Det virker heller ikke hos mig hmm måske er det en bug - for kan ikke se hvorofr man ikke f.eks. kan reformatere en time datatype ved at f.eks. bruge '%H:%i:%s'... Mærkeligt
Avatar billede amix Nybegynder
24. oktober 2003 - 13:09 #8
Ahh har lige fundet ud af det :D
Man skal bruge:
SELECT TIME_FORMAT(avg(tid), '%H:%i:%s') FROM tabel

Hvis datatypen er time.

Du var ellers meget tæt på detox :D
Avatar billede detox Nybegynder
25. oktober 2003 - 00:42 #9
amix -> JA, klart. Der var den ;o)
Avatar billede pluth Nybegynder
05. januar 2005 - 21:14 #10
Lukker det lige
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester