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 Jahr 2081 interpretiert werden.
  • 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.
  • Beispiel: Daher würde 01/05/81 als 1981 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.
  • Die Abfrage mit rr:
    • Sieht dasselbe Datum als 1981, was vermutlich Einstellungsdatensätze in der Tabelle emp hat.

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.