Verstehen der yy
vs rr
Datumsformate in Oracle SQL
Bei der Arbeit mit Datumsformaten in Oracle SQL stellt sich oft eine häufige Frage: Was ist der Unterschied zwischen den Datumsformaten yy
und rr
in Oracle? Das Verständnis dieses Unterschieds kann die Ergebnisse Ihrer Abfragen erheblich beeinflussen, insbesondere beim Umgang mit zweistelligen Jahresformaten. Lassen Sie uns diese Datumsformate aufschlüsseln und klären, warum sie unterschiedliche Ergebnisse liefern.
Das Problem erklärt
In Oracle SQL, wenn Sie Datumsmanipulationen oder -vergleiche durchführen, können Situationen auftreten, in denen Sie Zeichenfolgen in Datumsformate umwandeln müssen. Die Datumsformate yy
und rr
werden häufig für diesen Zweck verwendet.
Hier sind zwei Beispiele, die ihre Unterschiede verdeutlichen:
SELECT ename FROM emp WHERE hiredate = TO_DATE('01/05/81', 'dd/mm/yy');
SELECT ename FROM emp WHERE hiredate = TO_DATE('01/05/81', 'dd/mm/rr');
Bei der Ausführung können diese beiden Abfragen unterschiedliche Ergebnisse liefern, abhängig von der Interpretation des Jahres “81”.
Aufschlüsselung der Datumsformate
Das yy
Datumsformat
- Definition: Das
yy
Format ermöglicht die Eingabe eines zweistelligen Jahres. - Interpretation: Oracle nimmt automatisch an, dass die zwei Ziffern dem aktuellen Jahrhundert zugeordnet sind.
- Zum Beispiel, wenn das aktuelle Jahr 2023 ist, würde ein Datum wie
01/05/81
als das Jahr2081
interpretiert werden.
- Zum Beispiel, wenn das aktuelle Jahr 2023 ist, würde ein Datum wie
- Anwendungsfall: Dies kann zu unerwarteten Ergebnissen führen, insbesondere für Daten, die sich auf das 20. Jahrhundert beziehen.
Das rr
Datumsformat
- Definition: Das
rr
Format akzeptiert ebenfalls zweistellige Jahre, verwendet jedoch eine andere Methode zu deren Interpretation. - Interpretation: Die zweistelligen Jahre werden gerundet, um das vollständige Jahr zu bestimmen:
- 50-99: Behandelt als Jahre
1950-1999
. - 00-49: Behandelt als Jahre
2000-2049
.
- 50-99: Behandelt als Jahre
- Beispiel: Daher würde
01/05/81
als1981
interpretiert werden, was in den meisten Fällen wahrscheinlich die beabsichtigte Bezugnahme ist.
Zusammenfassung der Beispiele
Hier ist eine Zusammenfassung, wie sich diese Formate auf die Ausgabe auswirken:
- Die Abfrage mit
yy
:- Geht davon aus, dass
01/05/81
2081
ist, was wahrscheinlich keine entsprechenden Einstellungen hat.
- Geht davon aus, dass
- Die Abfrage mit
rr
:- Sieht dasselbe Datum als
1981
, was vermutlich Einstellungsdatensätze in der Tabelleemp
hat.
- Sieht dasselbe Datum als
Fazit
Das Verständnis der Unterschiede zwischen yy
und rr
ist entscheidend, wenn Sie Oracle SQL-Abfragen schreiben, die Daten betreffen. Während yy
zu einer Fehlinterpretation zukünftiger Jahre führen kann, bietet das rr
Format einen sinnvolleren Ansatz zur Umwandlung zweistelliger Jahre mit seinen Rundungsregeln.
Die Wahl des richtigen Formats kann Sie davor bewahren, Daten versehentlich auszuschließen und sicherstellen, dass Ihre SQL-Abfragen die beabsichtigten Ergebnisse liefern. Für die meisten Fälle, die historische Daten betreffen, wird das rr
Format zur Klarheit und Genauigkeit empfohlen.
Stellen Sie immer sicher, dass Sie den Kontext Ihrer Daten und das aktuelle Jahr berücksichtigen, wenn Sie mit zweistelligen Jahren arbeiten, um Fallstricke und Fehler bei der Interpretation zu vermeiden.