KAPITEL 10 Datumswerte und Zeitstempel - beim O'Reilly Verlag
KAPITEL 10 Datumswerte und Zeitstempel - beim O'Reilly Verlag
KAPITEL 10 Datumswerte und Zeitstempel - beim O'Reilly Verlag
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Der folgende Aufruf an TO_DATE gibt ein Datum zurück, weil das »fm« am Anfang der<br />
Formatmaske den Füllmodus für den gesamten String einschaltet. Dadurch wird 1 zu 01<br />
<strong>und</strong> 94 zu 1994:<br />
TO_DATE ('07-1-94', 'FXfmDD-FXMM-FXYYYY')<br />
Sowohl FM als auch FX dürfen in demselben Format-String mehrfach vorkommen, um<br />
einen oder beide Modifikatoren ein- oder auszuschalten.<br />
Das Element RR<br />
Anläßlich des Jahrtausendwechsels ist das Interesse für vierziffrige Jahresdarstellungen<br />
rasant gestiegen. Plötzlich wurden die Menschen sich der Mehrdeutigkeit bewußt, die den<br />
verbreiteten zweiziffrigen Jahreszahlen innewohnt. Ist mit 1. Januar 45 das Jahr 1945 oder<br />
2045 gemeint? Doch trotz dieser neuen Erkenntnis sind alte Gewohnheiten zäh <strong>und</strong> bestehende<br />
Systeme schwer zu ändern. Daher kann es sein, daß Sie nach wie vor den Benutzern<br />
auch die Eingabe von Jahreszahlen mit zwei statt vier Ziffern ermöglichen müssen.<br />
Die Jahresangabe mit zwei Ziffern ist besonders problematisch, wenn ein Jahrh<strong>und</strong>ertoder<br />
Jahrtausendwechsel bevorsteht. Da sich das Formatelement YY standardmäßig auf<br />
das gegenwärtige Jahrh<strong>und</strong>ert bezieht, gaben die Benutzer im November 1999 mit 1/1/1<br />
oder 1-JAN-1 in Wirklichkeit den 1. Januar 1901 in die Datenbank ein <strong>und</strong> nicht den 1.<br />
Januar 2001.<br />
Was soll ein Datenbankmanager da machen? Eine Lösung wäre es, überall die Trigger-<br />
Logik so zu ändern, daß immer das nächste Jahrh<strong>und</strong>ert vorausgesetzt wird, wenn der<br />
Benutzer eine Jahreszahl kleiner als zehn (oder wo auch immer Sie die Grenze ziehen<br />
möchten) eingibt. Das würde zwar funktionieren, ist aber nicht wünschenswert.<br />
Zum Glück kennt Oracle ein Formatelement, das dieses Problem behebt: RR. Mit RR<br />
konnten Sie vor dem Jahr 2000 Daten aus dem 21. Jahrh<strong>und</strong>ert <strong>und</strong> können nach dem<br />
Jahr 2000 Daten aus dem 20. Jahrh<strong>und</strong>ert (z.B. Geburtsdaten von K<strong>und</strong>en <strong>und</strong> Angestellten)<br />
eingeben. RR funktioniert folgendermaßen:<br />
Wir benutzen hier den Begriff »Jahrh<strong>und</strong>ert« umgangssprachlich: Das 20.<br />
Jahrh<strong>und</strong>ert von RR setzt sich aus den Jahren 1900 bis 1999 <strong>und</strong> das 21.<br />
Jahrh<strong>und</strong>ert aus den Jahren 2000 bis 2099 zusammen. Wir wissen, daß<br />
diese Definition eines Jahrh<strong>und</strong>erts nicht ganz richtig ist, aber sie erleichtert<br />
die Erklärung von RR.<br />
Wenn das aktuelle Jahr zur ersten Hälfte des Jahrh<strong>und</strong>erts gehört (die Jahre 0 bis 49),<br />
dann gilt:<br />
• Wenn das Eingabedatum in die erste Hälfte des Jahrh<strong>und</strong>erts fällt (die Jahre 0 bis<br />
49), gibt RR das aktuelle Jahrh<strong>und</strong>ert zurück.<br />
• Wenn das Eingabedatum in die zweite Hälfte des Jahrh<strong>und</strong>erts fällt (die Jahre 50 bis<br />
99), gibt RR das vorige Jahrh<strong>und</strong>ert zurück.<br />
298 | Kapitel <strong>10</strong>: <strong>Datumswerte</strong> <strong>und</strong> <strong>Zeitstempel</strong>