deutsches datum sortieren

deutsches datum sortieren

am 26.09.2007 21:53:46 von Daniel Schmidt

Hallo NG,

ich bekomme Daten die ein deutsches Datum (TT.MM.JJJJ) enthalten und die
per INSERT INTO in eine MySQL-Datenbank eingelesen werden, also nicht
verändert werden können. Nun würde ich diese gern sortieren können, da
die Daten aber im verkehrte MySQL-Format codiert sind, lassen sie sich
natürlich nicht sortieren. Ein umschreiben der Daten in das richtige
Format gestaltet sich schwierig, da ständig neue Daten im deutschen
Format dazukommen und eine Änderung in das richtige Format alle
Bestehenden überschreiben würde.

Grüße Daniel

Re: deutsches datum sortieren

am 26.09.2007 22:43:45 von Claus Reibenstein

Daniel Schmidt schrieb:

> ich bekomme Daten die ein deutsches Datum (TT.MM.JJJJ) enthalten und die
> per INSERT INTO in eine MySQL-Datenbank eingelesen werden, also nicht
> verändert werden können.

Das "also" ist schlicht Blödsinn. Selbstverständlich kann man das Datum
beim INSERT mittels STR_TO_DATE ins ISO-Format umrechnen.

Deine Beschreibung deutet außerdem darauf hin, dass das Datum nicht in
einer DATE-Spalte gespeichert wird. Ein krasser Designfehler.

> Nun würde ich diese gern sortieren können, da
> die Daten aber im verkehrte MySQL-Format codiert sind, lassen sie sich
> natürlich nicht sortieren.

Auf Dauer hilft da nur:
- Korrigieren der kaputten Daten in der Datenbank,
- Ändern des Spaltentyps auf DATE,
- Anpassung der INSERT-Anweisung.

Alles andere ist Rumdoktern an Symptomen, ohne die Krankheit zu heilen,
also Kappes.

> Ein umschreiben der Daten in das richtige
> Format gestaltet sich schwierig,

Dafür reicht ein SQL-Befehl.

> da ständig neue Daten im deutschen
> Format dazukommen

Das verhinderst zu zum Einen durch den richtigen Spaltentyp und zum
Anderen durch die Erweiterung des INSERT-Befehls um die o.g. Funktion.

> und eine Änderung in das richtige Format alle
> Bestehenden überschreiben würde.

Diesen Nachsatz verstehe ich nicht. Was soll daran falsch sein, kaputte
Daten zu korrigieren? Wo ist das Problem?

Schwierig ist das jedenfalls alles nicht. Alles, was Du machen musst,
ist, zwei SQL-Befehle abzusetzen und einen dritten um eine Funktion zu
erweitern. Fertig.

Gruß. Claus

Re: deutsches datum sortieren

am 26.09.2007 23:37:41 von Gregor Kofler

Daniel Schmidt meinte:
> Hallo NG,
>
> ich bekomme Daten die ein deutsches Datum (TT.MM.JJJJ) enthalten und die
> per INSERT INTO in eine MySQL-Datenbank eingelesen werden, also nicht
> verändert werden können.

Blödsinn. Ein Datum wird in einer Spalte mit entsprechenden Datentyp
gespeichert und entweder vom Skript vor dem Speichern oder durch MySQL
selber in das passendes Format gebracht. [1]

> Nun würde ich diese gern sortieren können, da
> die Daten aber im verkehrte MySQL-Format codiert sind, lassen sie sich
> natürlich nicht sortieren. Ein umschreiben der Daten in das richtige
> Format gestaltet sich schwierig, da ständig neue Daten im deutschen
> Format dazukommen und eine Änderung in das richtige Format alle
> Bestehenden überschreiben würde.

Das sind alles "Probleme", die sich bei korrekter Wahl des Datentypes
überhaupt nie stellen.

Gruß, Gregor

[1]
http://dev.mysql.com/doc/refman/5.1/de/datetime.html
http://dev.mysql.com/doc/refman/5.1/de/date-and-time-functio ns.html


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: deutsches datum sortieren

am 27.09.2007 02:10:39 von Daniel Schmidt

Hallo Claus,

ich habe mich verschrieben,

kein INSERT INTO sondern LOAD DATA LOCAL INFILE und Datum wird nicht
Deutsch sondern neuergins wie folgt übergeben: YY-MM-DD

Was nun? fragte das Huhn!


MFG Daniel


Claus Reibenstein schrieb:
> Daniel Schmidt schrieb:
>
>
>>ich bekomme Daten die ein deutsches Datum (TT.MM.JJJJ) enthalten und die
>>per INSERT INTO in eine MySQL-Datenbank eingelesen werden, also nicht
>>verändert werden können.
>
>
> Das "also" ist schlicht Blödsinn. Selbstverständlich kann man das Datum
> beim INSERT mittels STR_TO_DATE ins ISO-Format umrechnen.
>
> Deine Beschreibung deutet außerdem darauf hin, dass das Datum nicht in
> einer DATE-Spalte gespeichert wird. Ein krasser Designfehler.
>
>
>>Nun würde ich diese gern sortieren können, da
>>die Daten aber im verkehrte MySQL-Format codiert sind, lassen sie sich
>>natürlich nicht sortieren.
>
>
> Auf Dauer hilft da nur:
> - Korrigieren der kaputten Daten in der Datenbank,
> - Ändern des Spaltentyps auf DATE,
> - Anpassung der INSERT-Anweisung.
>
> Alles andere ist Rumdoktern an Symptomen, ohne die Krankheit zu heilen,
> also Kappes.
>
>
>>Ein umschreiben der Daten in das richtige
>>Format gestaltet sich schwierig,
>
>
> Dafür reicht ein SQL-Befehl.
>
>
>>da ständig neue Daten im deutschen
>>Format dazukommen
>
>
> Das verhinderst zu zum Einen durch den richtigen Spaltentyp und zum
> Anderen durch die Erweiterung des INSERT-Befehls um die o.g. Funktion.
>
>
>>und eine Änderung in das richtige Format alle
>>Bestehenden überschreiben würde.
>
>
> Diesen Nachsatz verstehe ich nicht. Was soll daran falsch sein, kaputte
> Daten zu korrigieren? Wo ist das Problem?
>
> Schwierig ist das jedenfalls alles nicht. Alles, was Du machen musst,
> ist, zwei SQL-Befehle abzusetzen und einen dritten um eine Funktion zu
> erweitern. Fertig.
>
> Gruß. Claus

Re: deutsches datum sortieren

am 27.09.2007 07:07:23 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: deutsches datum sortieren

am 27.09.2007 07:16:57 von Axel Schwenke

Daniel Schmidt wrote:
>
> kein INSERT INTO sondern LOAD DATA LOCAL INFILE und Datum wird nicht
> Deutsch sondern neuergins wie folgt übergeben: YY-MM-DD
>
> Was nun? fragte das Huhn!

Ja was wohl? Das gleiche. Auch LOAD DATA kann Transformationen
auf die Daten anwenden, z.B. STR_TO_DATE(). Lies halt mal die
ganze Seite zu LOAD DATA im Handbuch.

Außerdem kann MySQL YY-MM-DD schon nativ nach DATE konvertieren.
Auch wenn zweistellige Jahreszahlen eine bescheuerte Idee sind.
Datenquellen die das Format einfach mal so ändern, sind auch
nix was man unbedingt haben muß.


XL

Re: deutsches datum sortieren

am 27.09.2007 07:50:19 von Claus Reibenstein

Daniel Schmidt schrieb:

> kein INSERT INTO sondern LOAD DATA LOCAL INFILE und Datum wird nicht
> Deutsch sondern neuergins wie folgt übergeben: YY-MM-DD

Wenn die eh schon dabei sind, das Format zu ändern, sollten sie auch
gleich Nägel mit Köpfen machen und das Datum auf ISO umstellen.

> Was nun? fragte das Huhn!

Die Doku zu LOAD DATA lesen (Stichwort: SET).

> Claus Reibenstein schrieb:
>
>> [Fullquote gesnipt]

http://learn.to/quote

Gruß. Claus