Tijd in MySQL

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Brian T

Brian T

22/12/2011 18:42:14
Quote Anchor link
Hallo,

Aangezien ik bezig ben, met een systeem voor Flight Simulator piloten, heb ik een vraag.

Ik heb een programma, die laadt via PHP alle gegevens betreffende één vlucht, in mijn MySQL database. Maar de FlightTime (Totale vliegtijd), voegt hij in als bijv 01:30u. Maar door die : kan MySQL, in de query: SUM() de totale tijd niet berekenen.. Nu is mijn vraag, hoe kan ik MySQL dit wel laten doen?.
De 01:30 staat voor: 1u en 30 minuten. Dus niet 1 minuut en 3 seconden.

Groet,
Brian
 
PHP hulp

PHP hulp

15/05/2024 08:00:29
 
- Ariën  -
Beheerder

- Ariën -

22/12/2011 18:45:06
Quote Anchor link
Is het niet handiger om de totale minuten in de database op te slaan? Waarna je er in de view een mooie bewerking op los kan laten om het als 1:30 te tonen?
Gewijzigd op 22/12/2011 18:46:11 door - Ariën -
 
Brian T

Brian T

22/12/2011 18:47:06
Quote Anchor link
@- Aar -:

Dit is helaas niet mogelijk..
Aangezien ik A: Het programma niet dit commando kan geven. En B: Alle vluchten moeten nog afzonderlijk van elkaar bekeken kunnen worden. En ik hier niet extra een tabel voor ga aanmaken.
 
- Ariën  -
Beheerder

- Ariën -

22/12/2011 18:49:31
Quote Anchor link
En waarom is dit niet mogelijk dan? Je kan toch uiteindelijk vanaf minuten naar uren rekenen, zodat het programma het weer begrijpt?

En waarom een extra tabel aanmaken?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function min2uur($mins) {
            if ($mins < 0) {
                $min = abs($mins);
            } else {
                $min = $mins;
            }
            $H = Floor($min / 60);
            $M = ($min - ($H * 60)) / 100;
            $hours = $H +  $M;
            if ($mins < 0) {
                $hours = $hours * (-1);
            }
            $expl = explode(".", $hours);
            $H = $expl[0];
            if (empty($expl[1])) {
                $expl[1] = 00;
            }
            $M = $expl[1];
            if (strlen($M) < 2) {
                $M = $M . 0;
            }
            $hours = $H . "." . $M;
            return $hours;
    }
?>


of mun MySQL met SEC_TO_TIME()
Gewijzigd op 22/12/2011 18:52:42 door - Ariën -
 
Brian T

Brian T

22/12/2011 18:52:26
Quote Anchor link
Het programma kan de uren niet omrekenen naar minuten.. Enkel naar alleen minuten. Of alleen de uren.. Of alleen de uren + minuten.

En met extra tabel bedoelde ik, die totale tijd, per piloot, in 1 tabel.
 
- Ariën  -
Beheerder

- Ariën -

22/12/2011 18:53:53
Quote Anchor link
Met gegeven code kan je het aantal secondes invoeren (uit de database bijvoorbeeld), en deze in uren aan je programma doorgeven.
 
Brian T

Brian T

22/12/2011 18:57:09
Quote Anchor link
Bedankt voor de code, - Aar -.
Maar om het voor de piloten handiger te houden, zou ik toch de uren:minuten willen behouden. En daarom vroeg ik; Welke query heb ik hiervoor nodig?.

Toch bedankt, - Aar -.
 
Erwin H

Erwin H

22/12/2011 19:05:13
Quote Anchor link
Vooropgesteld, ik denk dat Aar het beste advies geeft, het totaal aantal minuten opslaan en niet in een tijd formaat.

Maar.... als dat echt niet kan dan kan je de database ook het werk voor je laten doen. Er zijn een groot aantal functies in MySQL om met datum en tijd om te gaan: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
Zo heb je bijvoorbeeld HOUR() en MINUTE() waarmee je dat deel van de tijd uit het database veld kan halen. Daarmee kan je vervolgens dan weer verder rekenen. Stel je hebt een veld "vluchttijd" in je tabel die aangeeft hoe lang een vlucht heeft geduurd en je wil het totaal aantal uren hebben dan kan dat als volgt:

SELECT SUM( HOUR(vluchttijd)*60 + MINUTE(vluchttijd) )/60 AS totaal FROM tabel

Hier heb ik dan nog rekening gehouden met het overblijvende aantal minuten, maar ik denk dat je daar zelf ook wel mee verder kunt.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

22/12/2011 19:13:24
Quote Anchor link
zie dit topic
 
- SanThe -

- SanThe -

22/12/2011 19:40:13
Quote Anchor link
@Erwin: Moet die /60 niet ook tussen de haakjes van SUM()? Het ziet er nu voor mij uit als dat ie eerst de SUM bepaalt en dat dan door 60 deelt.
Gewijzigd op 22/12/2011 20:09:24 door - SanThe -
 
Erwin H

Erwin H

22/12/2011 19:57:30
Quote Anchor link
@Santhe,
Inderdaad, dat is ook wat ik wil. Eerst alle minuten bij elkaar optellen en dan door 60 delen. Je kan het ook binnen de haakjes zetten, maar dan doe je die berekening voor elk record. Eindresultaat zou gelijk moeten zijn, alleen je doet n keer meer berekeningen.
 
- SanThe -

- SanThe -

22/12/2011 20:10:00
Quote Anchor link
Ha, zo had ik het nog niet bekeken. Netjes.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.