[MySQL]welke data type voor hh.mm.ss

Pagina: 1
Acties:

  • Superboer12
  • Registratie: Februari 2004
  • Laatst online: 08-02 22:37
Ik maak en beheer de site voor m'n atletiekvereniging.
Hierop staan ook diverse uitslagen.
Momenteel heb ik de kolom waar de prestatie instaat het type double(6,3) gegeven.
Allerlei prestatie komen er dan goed in te staan, bijv kogelstoten 'mm.cmcm' of 100m sprint 'ss.msmsms'
Bij lange afstanden komen echter ook uren kijken. De uitslag wordt dan 'hh.mm.ss'
Het invoeren geeft geen problemen, maar de secondes worden gewoon weggelaten. Dit is ook logisch, want zo is het data type nu eenmaal.

Nu is mijn vraag, welke data type moet ik gebruiken?

Infinitus est numerus stultorum


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

60 minuten is een uur, dus in principe kun je gewoon doortellen en een berekening doen om uit te tellen hoeveel uren er nu in al die minuten zitten. Als die prestatietabel wat minder generiek was geweest dan had je ook kunnen kijken naar het TIME-datatype of je had twee timestamps kunnen opslaan en het verschil daartussen berekenen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Superboer12
  • Registratie: Februari 2004
  • Laatst online: 08-02 22:37
Het hele idee is om één generieke tabel te maken voor alle uitslagen. Dit biedt namelijk een groot aantal voordelen voor mij.
De oplossing met twee timestamps lijkt me niet echt effectief. Misschien werkt het bij de loopnummers, maar bij de technische nummers gaat het dan gegarandeerd fout.

Infinitus est numerus stultorum


Verwijderd

Begrijp ik goed dat je alle uitslagen in eenzelfde veld wil stoppen? Imo ben je niet handig bezig als je zowel afstanden als tijden in eenzelfde veld stopt: het is niet hetzelfde.

De makkelijkste (maar ook ranzige) oplossing is er een string van maken, en dan alles er bij opslaan (verspringen: 6m 34cm, 10km loop: 01h 10m 23s, etc).

Beter maak je een goed databasemodel, waardoor je dit probleem niet hebt.

  • Mexicanos
  • Registratie: Juli 2001
  • Niet online
Wat je ook zou kunnen dien is een extra kolom met de gegevens of het een tijd in (milli)seconden is of dat het een afstand in centimeters is.
En dan zelf de seconden, minuten of centimeters omrekenen in de grotere variant dus bv:
380 seconden is 6 min 20 sec.

[ Voor 3% gewijzigd door Mexicanos op 13-03-2006 00:18 ]


  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 30-04-2025
Verwijderd schreef op zondag 12 maart 2006 @ 21:43:
Beter maak je een goed databasemodel, waardoor je dit probleem niet hebt.
Dat vind ik makkelijker gezegd dan gedaan :P ik heb ook met dit probleem gezeten voor een manager voor een sportdag. Je hebt één type record, namelijk een resultaat; maar de inhoud bestaat weer uit twee verschillende types.

Ik heb dit opgelost door een DOUBLE te gebruiken die afhankelijk van een ENUM (tijd,afstand) het aantal meters is of een tijdsaanduiding. Ik had echter geen problemen zoals de TS, met beperkingen in de primitieve. Weet iemand een mooiere oplossing?

[ Voor 7% gewijzigd door JeRa op 13-03-2006 00:21 ]


  • Superboer12
  • Registratie: Februari 2004
  • Laatst online: 08-02 22:37
Mexicanos schreef op maandag 13 maart 2006 @ 00:17:
Wat je ook zou kunnen dien is een extra kolom met de gegevens of het een tijd in (milli)seconden is of dat het een afstand in centimeters is.
En dan zelf de seconden, minuten of centimeters omrekenen in de grotere variant dus bv:
380 seconden is 6 min 20 sec.
De uitslag wordt al gekoppeld aan een tabel van onderdelen waar onderandere de eenheid instaat.
De omreken oplossing lijkt me op dit moment nog de beste. Het is ook maar een vrij klein deel van de uitslagen die dit vereist, omdat het alleen van toepassing is voor de lange loop afstanden.

Ik heb het al als TEXT geprobeerd, maar dan loop je tegen een ander probleem aan. De 1 komt voor de 8, dus 11 minuten komt voor 8 minuten....

De tabel ziet er trouwens als volgt uit:
  • ID - INT
  • wedstrijd - INT
  • name - TEXT
  • club - TEXT
  • startnr - TEXT
  • part - INT
  • cat - INT
  • pres - DOUBLE(6,3)

Infinitus est numerus stultorum


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 09-12-2025
Je kunt toch ook van de presentatie een int veld maken en dan de meest kleine eenheid er in zetten? Of krijg je dan problemen met te grote getallen?

Noushka's Magnificent Dream | Unity


  • Superboer12
  • Registratie: Februari 2004
  • Laatst online: 08-02 22:37
Ik heb de scripts nu aangepast, zodat uren omgerekend worden naar minuten bij het plaatsen en terug bij het uitlezen.
Niet helemaal hoe ik het eerst in gedachte had, maar wel 100% effectief.

Infinitus est numerus stultorum


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 00:22
In een unsigned INT veld kun je 4294697296 milliseconden kwijt. Dat is ruim 49 dagen onafgebroken hardlopen. In mm's betekent het ruim 4200Km verspringen / speerwerpen. Ik zou dus gewoon voor de oplossing van Michali gaan.

Regeren is vooruitschuiven

Pagina: 1