Rekenen met tijden
trinco ingels
10/04/2012 16:42:15Als ik nu nog eens 63 uur en 30 min invul komt er 63:30 + 63:30 = 127:00 uur.
Dat is ook hetgeen wat ik wil. Dat je kan zien hoeveel uur je gewerkt heb.
Misschien kan dit ook op jouw manier;)
Bedankt voor het meedenken! En ik sta open voor nieuwe technieken natuurlijk..
Dat is ook hetgeen wat ik wil. Dat je kan zien hoeveel uur je gewerkt heb.
Misschien kan dit ook op jouw manier;)
Bedankt voor het meedenken! En ik sta open voor nieuwe technieken natuurlijk..
PHP hulp
22/12/2024 14:53:00Erwin H
10/04/2012 16:43:52De vraag is.... hoe sla je 63.30 uur op in je database nu?
Toevoeging op 10/04/2012 16:48:53:
Even een voorbeeldje hoe het zou gaan met twee integer kolommen:
Let op dat ik ook een eigenlijk foutieve input van 0 uur en 120 minuten doe. Geen probleem in dit geval.
Toevoeging op 10/04/2012 16:50:09:
Een andere optie is nog om een kolom te nemen en alle uren voor een insert om te rekenen naar minuten, zodat je alleen minuten in je tabel hebt staan.
Toevoeging op 10/04/2012 16:48:53:
Even een voorbeeldje hoe het zou gaan met twee integer kolommen:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
CREATE TABLE werktijden(
uren SMALLINT,
minuten SMALLINT
);
INSERT INTO werktijden (uren, minuten)
VALUES(1, 30), (2, 15), (300, 50), (0, 120);
SELECT ( (SUM(uren)+ (SUM(minuten) DIV 60) ) AS uren_totaal, SUM(minuten) MOD 60
FROM werktijden
uren SMALLINT,
minuten SMALLINT
);
INSERT INTO werktijden (uren, minuten)
VALUES(1, 30), (2, 15), (300, 50), (0, 120);
SELECT ( (SUM(uren)+ (SUM(minuten) DIV 60) ) AS uren_totaal, SUM(minuten) MOD 60
FROM werktijden
Let op dat ik ook een eigenlijk foutieve input van 0 uur en 120 minuten doe. Geen probleem in dit geval.
Toevoeging op 10/04/2012 16:50:09:
Een andere optie is nog om een kolom te nemen en alle uren voor een insert om te rekenen naar minuten, zodat je alleen minuten in je tabel hebt staan.
Gewijzigd op 10/04/2012 16:49:09 door Erwin H
trinco ingels
11/04/2012 10:47:01Ik sla het op als type "time" en dan bijvoorbeeld 09:45:00, 63:30:00
Als ik het via mysql handmatig invoer dan he;)
Als ik het via mysql handmatig invoer dan he;)
Erwin H
11/04/2012 11:47:26Dan 900:00:00 :-)
Ok, flauw, je kan dat soort waardes dus wel opslaan, maar zoals je inmiddels al hebt gezien is voornamelijk het eruit halen moeilijk. Simpelweg omdat die velden er niet voor gebouwd zijn. Daarnaast nemen zo ook nog eens meer ruimte in beslag:
SMALLINT (-32768 t/m 32767 of 0 t/m 65535) 2 bytes
TIME (-838:59:59 t/m 838:59:59) 3 bytes
Als je nu mijn laatste suggestie neemt en alles in minuten opslaat dan kan je tot ongeveer 1100 uur in een veld kwijt en dan gebruik je 2 bytes per veld in plaats van 3.
Ok, flauw, je kan dat soort waardes dus wel opslaan, maar zoals je inmiddels al hebt gezien is voornamelijk het eruit halen moeilijk. Simpelweg omdat die velden er niet voor gebouwd zijn. Daarnaast nemen zo ook nog eens meer ruimte in beslag:
SMALLINT (-32768 t/m 32767 of 0 t/m 65535) 2 bytes
TIME (-838:59:59 t/m 838:59:59) 3 bytes
Als je nu mijn laatste suggestie neemt en alles in minuten opslaat dan kan je tot ongeveer 1100 uur in een veld kwijt en dan gebruik je 2 bytes per veld in plaats van 3.