Auge: Umgang mit Jahresangaben kleiner Jahr 1000 in MySQL

Beitrag lesen

Hallo

Die MySQL-Doku zu Datums- und Zeitfunktionen sagt, dass das System Datumsangaben im Format Y-m-d (2014-09-21; hey, übermorgen ist Herbstanfang) ab dem Jahr 1000 akzeptiert. Ich habe in ein DATE-Feld testweise Jahreszahlen unterhalb 1000 eingetragen (Beispiel: 0793-06-08) und diese werden komischerweise, im Gegensatz zu den Angaben in der Doku, auch akzeptiert.

In der Dokumentation wird auch darauf hingewiesen, dass frühere Daten unterstützt werden könnten, aber dass das eben nicht unter Garantie so sein muss.

Deshalb will ich mich ja auch nicht darauf verlassen. Mag sein, dass der MySQL-Server auf meinem Webspace das hinnimmt, woanders muss das nicht so sein. Von Datumsangaben v.u.Z. will ich schon garnicht reden, die passen wegen des Minus definitiv nicht in ein normales Datumsfeld.

Hat hier jemand Ideen, wie ich geschichtliche Daten inklusive Datum abspeichern kann?

Jedenfalls nichts schöneres, als die Möglichkeiten, die du selber schon recherchiert hast. Du könntest aber auch ein int-Feld nehmen und dort einen tagesgenauen Zeitstempel speichern. Dann bietet sich natürlich eine renommierte Tageszählung an.

Moment mal, da bringst du mich auf … da war doch was … <rumkram /> Julianischer Kalender … nee, … „nicht zu verwechseln mit …“ … ah, da isses: das Julianische Datum.

Zitat aus dem Wikipedia-Artikel:
„Es gibt die Zeit in Tagen an, die seit dem 1. Januar −4712 (4713 v. Chr.) 12:00 Uhr vergangen ist.“

Minuswerte, um vor den Tag 1 zu kommen, werden da wohl erlaubt sein, oder? Der Artikel ist für diese Uhrzeit zu umfangreich, aber definitiv ein Ansatzpunkt.

Alle drei Methoden, die jetzt im Raum schweben, sind eher Hacks, als saubere Lösungen. Vielleicht solltest du es künstlich erschweren, mit diesen Hack zu arbeiten, damit nicht zu leichtfertig fahrlässige Fehler passieren. Du könntest z.B. Blobs statt näher bestimmten Typen benutzen.

Wofür ich mich auch immer entscheide, das ist noch Zukunftsmusik.

Du könntest auch das Datum von der eigentliche Tabelle trennen und einen View bauen, der die die Datensätze wieder zusammenführt. So ist das Auslesen über den View recht bequem, aber es ist schwieriger Datensätzen einzufügen oder zu manipulieren.

Naja, abspeichern muss ich das Datum so oder so. Da sehe *ich* jetzt keinen Einsatzzweck für einen View.

Für wiederkehrende Funktionalität, wie die Differenzbildung, könntest du eigene MySQL-Funktionen schreiben.

Herrje, gleich die nächste Baustelle. :-)

Tschö, Auge

--
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
Terry Pratchett, "Wachen! Wachen!"
ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
Veranstaltungsdatenbank Vdb 0.3