Hallo,

Ik zit de hele dag al te zoeken, maar kom er niet uit
Ik wil een maand "05" opslaan in een database.
Zodra ik tinyint gebruik, dan maakt hij er automatisch "5" van.
Wie kan mij zeggen welke type ik moet gebruiken?
1) Waarom zou je dat uberhaupt willen?

2) Met type varchar gaat het wel lukken.
oke, ik had namelijk een script gevonden waarmee je leeftijd kan berekenen. en daar moet je 2 getallen voor gebruiken.
Vandaar..
Als je zeker weet dat je ook die nul in de database wilt hebben dat moet je er tekst van maken en gebruik je dus char of varchar. Maar wat is het nut, het is in feite een getal. Die nul is slechts visueel.
Leeftijd berekenen laat je toch gewoon door MySQL doen? ;-)
Willem vp schreef op 27.08.2009 18:03
Leeftijd berekenen laat je toch gewoon door MySQL doen? ;-)

Idd, daarvoor heb je dus ook het jaar en de dag nodig. Dus heb je een veld nodig van het type date.
Verder is het niet nodig dat een 0 voor een getal in de db wordt opgeslagen, dit heeft met de opmaak te maken en kan je met [php]sprintf[/php] goed krijgen.
@karl,

Dat is niet nodig als je de geboortedatum als '1950-01-01' hebt staan kun je gewoon onderstaande query gebruiken :)

have fun.



SELECT (YEAR(CURRENT_DATE) - YEAR(geboortedatum)) - IF(RIGHT(CURRENT_DATE(),5) < RIGHT(geboortedatum,5),1,0) AS leeftijd from members;
Ik ben zelf niet zo gek op berekeningen die afhankelijk zijn van de opmaak ;-)

De volgende methode is misschien ietwat omslachtig, maar maakt tenminste geen aannames over je datumformaat:

SELECT YEAR(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(geboortedatum))) AS leeftijd FROM members;

Hier worden de huidige datum en de geboortedatum omgerekend naar het aantal dagen sinds het jaar 0, daar wordt het verschil tussen berekend, en dat wordt weer omgezet naar een datum. Je weet dan hoeveel jaar, maanden en dagen die persoon is. Het jaartal (op te vragen met YEAR()) is dan de leeftijd in jaren.
Ik gebruik altijd deze:

SELECT
	(YEAR(CURRENT_DATE())-YEAR(geboortedatum)) - (RIGHT(CURRENT_DATE(),5)<RIGHT(geboortedatum,5)) AS leeftijd
FROM tabelnaam
René schreef op 27.08.2009 20:19
@karl,

Dat is niet nodig als je de geboortedatum als '1950-01-01' hebt staan kun je gewoon onderstaande query gebruiken :)

Klopt.
Ik heb verder niet gekeken naar dat het datum was, maar gewoon een getal. Dan kan je sprint, money_format en number_format gebruiken.
@Jan, lukt gewoon dit niet?

SELECT
    YEAR(CURRENT_DATE() - geboortedatum)
FROM tabel

Reageren