PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Oracle - Datumsproblem


Watson007
2015-04-10, 11:38:34
Hier kennt sich doch bestimmt jemand mit Oracle aus.

Ich habe da eine Tabelle mit einer Spalte vom Typ Date. Es ist ein Datensatz gespeichert der in dieser Spalte den Wert 03.03.2055 enthält.

Mache ich nun ein

select spalte from tabelle where id=xx;

erhalte ich 03.03.2055. Mache ich dagegen ein

select to_date(spalte) from tabelle where id=xx;

erhalte ich 03.03.1955. Mache ich nun ein

select to_date(spalte,'mm.dd.yyyy') from tabelle where id=xx;

erhalte ich 03.03.0055. Woran liegt das? Eigentlich soll der Datentyp Date doch bis ins Jahr 9999 gehen können.

Scheinbar kann er das Jahrhundert auslesen wenn ich den Wert als String auslese, wenn ich ihn in den internen Date-Datentyp umwandle sieht er das Jahrhundert nicht mehr.

Ist das ein Überlauffehler oder was?

Watson007
2015-04-10, 14:30:32
schon gelöst... liegt an der NLS_DATE_FORMAT-Einstellung für Datumskonvertierungen, dass diese defaultmäßig auf DD.MM.RR liegt wobei RR besagt dass die Jahrhundert-Information verloren geht und das Jahrhundert errechnet wird anhand folgender Regeln:

1. liegt das Jahr, das nur noch 2 stellig vorliegt, zwischen 0 und 49 wird das 20. Jahrhundert genommen
2. liegt das Jahr zwischen 50 und 99 wird das 19. Jahrhundert genommen.

das sind die Rechenregeln für RR solange das aktuelle Jahr noch unter 2050 liegt.