Toon posts:

[MySQL] probleem met format datum

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een spreadsheet (in OpenOffice.org Calc) met naam, adresgegevens en
geboortedata.
Dat wil ik overzetten naar een MySQL database
Dat is te doen door de tabel op te staan als csv-bestand en dat met LOAD INFILE in de juiste tabel te laden.
Dat gaat met alle rijen goed behalve met de geboortedata. MySQL wil het formaat JJJJ-MM-DD hebben, maar de spreadsheet heeft DD-MM-JJJJ.
Ik kan natuurlijk alle data overtypen en in het formaat zetten dat MySQL wil hebben, maar dat is voor 300 records nogal veel werk en er is altijd kans op typfouten.

Ik zoek dus een manier om in Openoffice het formaat van de datum te wijzigen.
Met de optie 'format cell' is het mogelijk om de 'afgebeelde' datum te wijzigen, het blijft echter wel in het ongeformatte formaat in de cell staan. Dus je ziet DD-MM-JJJJ, maar er staat eigenlijk JJJJ-MM-DD.
Of iets waardoor MySQL DD-MM-JJJJ begrijpt.

Als ik nu DD-MM-JJJJ invoer (terwijl JJJJ-MM-DD wordt verwacht) komen overal nullen te staan : 0000-00-00.

Als ik met Google zoek naar datum formatten met MySQL kom ik alleen maar uit op dingen om een datum met DATE_FORMAT anders af te beelden dan zoals het in de MySQL database staat.

Heeft iemand hier een oplossing voor?

  • vinnux
  • Registratie: Maart 2001
  • Niet online
STR_TO_DATE(str,format)
This is the reverse function of the DATE_FORMAT() function. It takes a string str and a format string format, and returns a DATETIME value. The date, time, or datetime values contained in str should be given in the format indicated by format. For the specifiers that can be used in format, see the table in the DATE_FORMAT() function description. All other characters are just taken verbatim, thus not being interpreted. If str contains an illegal date, time, or datetime value, STR_TO_DATE() returns NULL.
code:
1
2
3
4
5
6
7
8
mysql> SELECT STR_TO_DATE('03.10.2003 09.20',
    ->                    '%d.%m.%Y %H.%i');
        -> '2003-10-03 09:20:00'
mysql> SELECT STR_TO_DATE('10arp', '%carp');
        -> '0000-10-00 00:00:00'
mysql> SELECT STR_TO_DATE('2003-15-10 00:00:00',
    ->                    '%Y-%m-%d %H:%i:%s');
        -> NULL


STR_TO_DATE() is available as of MySQL 4.1.1.

[ Voor 9% gewijzigd door vinnux op 25-08-2004 13:34 ]


  • 0528973
  • Registratie: Juni 2003
  • Laatst online: 15-05-2013
Mijn eerdere post, raakte kant nog wal.
Ik zie dat OpenOffice een eigen intern formaat gebruikt en dat idd wanneer je een document opslaat als CSV bestand, de datum niet opgeslagen wordt in het weergegeven formaat maar in het opgeslagen formaat. Dit lijkt voorzover ik heb kunnen vinden, niet aan te passen te zijn. De oplossing die dan over blijft, is alle huidige ingevoerde data omzetten naar een textuele weergave van de data.
Oftewel het type van de cellen waar je de geboortedata in opslaat is tekst ipv datum. Om te voorkomen dat je dan de interne OpenOffice waarde krijgt voor de geboortedatum, zou ik het onderstaande doen:

Voeg aan de cell naast de geboortedata(cell b3 bijv.) iets als onderstaande toe:
=TEKST.SAMENVOEGEN(DEEL(B3;8;4);DEEL(B3;5;3);DEEL(B3;1;3));
Mijn OpenOffice versie is Nederlands, voor engels zou ik zoeken naar functies als substr & concat;

Deze functie voeg je aan alle cellen naast alle geboortedata cellen toe en voila, de datum staat zoals MySql hem graag heeft.

[ Voor 143% gewijzigd door 0528973 op 25-08-2004 14:38 ]

Pascal


Verwijderd

Topicstarter
0528973 schreef op 25 augustus 2004 @ 14:09:
Voeg aan de cell naast de geboortedata(cell b3 bijv.) iets als onderstaande toe:
=TEKST.SAMENVOEGEN(DEEL(B3;8;4);DEEL(B3;5;3);DEEL(B3;1;3));
Mijn OpenOffice versie is Nederlands, voor engels zou ik zoeken naar functies als substr & concat;

Deze functie voeg je aan alle cellen naast alle geboortedata cellen toe en voila, de datum staat zoals MySql hem graag heeft.
Bedankt. Ik ga het proberen.

[ Voor 39% gewijzigd door Verwijderd op 25-08-2004 16:25 ]