[PHP] Datum omzetten

Pagina: 1
Acties:
  • 127 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BPG908
  • Registratie: Oktober 2001
  • Laatst online: 16-09 23:23

BPG908

Ik ben bijna jarig !

Topicstarter
In mijn MYSQL heb een een database waar a.o. de datum bij staat van wanner iets is toegevoed. nu wil ik deze datum weeregven op mijn site, dit is uiteraard geen probleem!.
echter staat de datum op deze manier in de database Bv: "5 Oktober 2002'.
Dit wil ik echter op mijn hoofd site niet hebben staan. ik wil graag "05-10-2002"

Voor de manier die ik wil hebben gebruik je noormaal gesproken "date("m.d.y");"

Nu weet ik echter niet hoe ik "5 Oktober 2002' kan omzetten naar m.d.y (allen op die pagina) kan iemand mij daar bij helpden ?

Acties:
  • 0 Henk 'm!

Verwijderd

Is dat gewoon een Stringveld of heb je een datumveld gebruikt?
Als het een datumveld is kan je de MySQL functie DATE_FORMAT() gebruiken in de query om de vorm van de datum aan te passen.

Acties:
  • 0 Henk 'm!

Verwijderd

Ik gebruik voor de dag van de maand en de maandnaam DAYOFMONTH(datum_veld) en MONTHNAME(datum_veld).
Je moet ze ook in je query plaatsen, dus

query=SELECT bla1, bla2, DAYOFMONTH(datum), MONTHNAME(datum), bla3, etc from ...........etc

en dan
$dagvdmaand=$r["DAYOFMONTH(datum)"];
etc...

Mysql Date/Time functions

[ Voor 25% gewijzigd door Verwijderd op 15-03-2003 17:35 ]


Acties:
  • 0 Henk 'm!

  • BPG908
  • Registratie: Oktober 2001
  • Laatst online: 16-09 23:23

BPG908

Ik ben bijna jarig !

Topicstarter
Nee, ik heb helaas geen datum veld gebruikt. het script dat de data heeft toegevoed zette de datum er in als 'tekst'zegmaar. dat was een jaar geleden, nu zou ik uiteraard ook een datu veld hebben gebruikt

Acties:
  • 0 Henk 'm!

Verwijderd

Tja, dan moet je even een date() veld maken :+ Da's wel een stuk makkelijker dan wat je nu hebt, je kan er ook veel fijner mee rekenen, bijvoorbeeld een bepaalde datum range selecteren en ordenen op datum, etc. Mocht je het bovenstaande willen uitvoeren ZONDER date(), dan moet je (denk ik) de string gaan matchen met preg_match en daar weer acties aanhangen, ofwel, op een onnodig ingewikkelde manier de datumstring uitpuizen, omgooien en weer uitpoepen :)

[ Voor 5% gewijzigd door Verwijderd op 15-03-2003 17:34 ]


Acties:
  • 0 Henk 'm!

Verwijderd

je zou het zo kunnen doen:

PHP:
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
26
27
<?php
$maanden = Array('Januari' => '1',
                 'Februari' => '2',
                 'Maart' => '3',
                 'April' => '4',
                 'Mei' => '5',
                 'Juni' => '6',
                 'Juli' => '7',
                 'Augustus' => '8',
                 'September' => '9',
                 'Oktober' => '10',
                 'November' => '11',
                 'December' => '12'
                 );

$oude_datum = '5 Oktober 2002';
$datum_array = explode(' ',$oude_datum);

$maand = $maanden[$datum_array[1]];
if(strlen($datum_array[0]) == 1)
{
$datum_array[0] = '0' . $datum_array[0];
}
$nieuwe_datum = $datum_array[0] . '-' . $maand . '-' . $datum_array[2];

echo $nieuwe_datum;
?>


mischien een beetje n00b gedaan maar 't werkt wel ;)

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Volgens mij zit er niet veel anders op dan even voor alle maanden die er zijn het juiste getal te updaten m.b.v. REPLACE.
Iets in de trant van
code:
1
UPDATE tabel SET varchar_veld=REPLACE(varchar_veld,'Oktober','-10-');
etc.

Je kunt wel met locales gaan klooien, maar ik denk dat even 12 update queries uitvoeren een stuk makkelijker is. Als vervolgens het varchar veld allemaal het juiste formaat datum bevatten, voeg je een veld toe aan je tabel met een DATE, DATETIME of TIMESTAMP type, en doe je een update query
code:
1
UPDATE tabel SET datum_veld=varchar_veld
MySQL zet de data dan gewoon op zijn eigen date-manier in de tabel, en hoef je je er verder niet meer druk om te maken. Tot slot (na controle, uiteraard), kun je je varchar_veld droppen, en je datum veld renamen naar de oude naam van je varchar veld.

Zoiets lijkt me de snelste oplossing. Erg fraai is het niet, maar goed, dan had je maar een betere database layout moeten hebben ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1