hallo ene simpel vraagje, maar ik kom er niet uit.

ik heb een inputveld waarin een datum ingevuld moet worden als dd-mm-yyyy. deze moet weg geschreven worden als yyyy-mm-dd in de mysql database. Hoe kan ik deze makkelijk converteren in een (zelfgemaakte) functie?

ik zit namelijk ook een beetje met het feit dat een datum op twee manieren ingevuld kunnen worden, als 04-03-2007 en als 4-3-2007.

alvast bedankt!
mktime lijkt me het meeste geschikt, dus je maakt van je datum een timestamp en die frot je in de database.
hmm en daar doe ik zo moeilijk over met een zelfgebouwde functie die de streepjes opzoek en zo omzet naar het goede formaat. maar zo kan het dus ook:

$datum2= date ("y-m-d", mktime ($datum));

bedankt baarr
Ga alsjeblieft geen timestamps in een database gebruiken. Gebruik gewoon een DATE veld voor een datum!

Maar goed, om de datum om te zetten:
<?php
$datum = 'dd-mm-yyyy';
$dmj = explode('-', $datum);
$db_datum = $dmj[2].'-'.$dmj[1].'-'.$dmj[0];
?>
Zoiets zou je kunnen gebruiken.
Hmmz, ik dacht altijd dat mysql het wel snapte als ik een timestamp gaf voor een dateveld, maar dat heb ik net voor de zekerheid nog eens getest, maar blijkbaar dus niet .. fck
@ Baarr: nee, een timestamp is heel iets anders dan een datum.

@ TS: ik laat users liever niet zelf een datum invullen in een textveld. Het is vragen om moeilijkheden. Het is handiger om bijvoorbeeld drie selectboxen te maken met de goede values in de options. Daarna controleer je nog met [php]checkdate[/php] of het een geldige datum is (zodat ze niet 31 februari in kunnen vullen)
ja het wordt een simpele website voor een vriend van mij, dus er zal maar 1 gebruiker zijn. dus voor foute invoeren hoef ik niet zoveel erg bang te zien, normaliter zal ik ook geen datum zelf laten invullen, maar nu is het even snel en makkelijk. heel erg bedankt voor de reacties!
Jan Koehoorn schreef op 07.04.2007 16:32
@ Baarr: nee, een timestamp is heel iets anders dan een datum.


Hoezo heel iets anders ?? Een datum is gebaseerd op een timestamp, intern in mysql zal het ook opgeslagen worden als timestamp...

Dit werkt trouwens wel

INSERT into tabel (datum) values (FROM_UNIXTIME(1175956040));

@ Baar: het is precies andersom. Een timestamp is gebaseerd op een datum; het aantal seconden vanaf 1 januari 1970.

Hoe het intern opgeslagen wordt doet er niet toe. Wat je er als gebruiker mee kunt wél. En met een datum kun je veel meer dan met een timestamp.

Ik zal je een voorbeeld geven. Wolfgang Amadeus Mozart leefde van 27 januari 1756 tot 5 december 1791. Kun jij een script voor me maken dat berekent hoeveel dagen hij geleefd heeft? Je mag uitsluitend timestamps gebruiken ;-)
Met een mysql_query zou ik TO_DAYS gebruiken en ze van elkaar aftrekken. Is wellicht betere methode voor.

Als ik alleen timestamps mag gebruiken zou ik de timestamps van elkaar aftrekken, delen door 60, delen door 60 , delen door 24.

En het ging over het toevoegen van een datum in sql, en ik zou daar hoe dan ook een DATE of DATETIME veld voor gebruiken, begrijp me niet verkeerd.
In MySQL:

SELECT
DATEDIFF(sterfdatum, geboortedatum) AS leeftijd_in_dagen

Met een mysql_query zou ik TO_DAYS gebruiken en ze van elkaar aftrekken. Is wellicht betere methode voor.

TO_DAYS kun je twee dingen voeren, een timestamp of een datum. We hadden afgesproken dat je met timestamps zou werken. Helaas beginnen die pas vanaf 1970. Je tweede methode zou dus ook niet kunnen.

Reageren