Frage

Es kommt so vor, dass ich ein Datum aus einer Varchar2 -Spalte in Oracle erhalten muss, aber es ist inkonsistent in Formatierung. Einige Felder haben möglicherweise "2009.12.31", andere "2009/12/32 00:00:00". Gibt es ein Standardkonstrukt, das ich verwenden könnte, damit ich nicht durchgehen muss

begin
  to_date(date, mask1)
exception
  begin
    to_date(date,mask2)
  exception
    ..
  end
end

Blöcke oder Vor -Datum -Zeichenfolge -Analyse zur Bestimmung der richtigen Maske? Etwas wie to_date(date, mask1,mask2,..) ?

War es hilfreich?

Lösung

Nein, aber einige Orakel -Datumsformate "vergeben" von Unterschieden, z.

SQL> select to_date('2009.12.31','YYYY/MM/DD') from dual;

TO_DATE('20
-----------
31-DEC-2009

Dadurch kann die Anzahl der Fälle verringert werden, die Sie tun müssen. Ich schlage vor, Sie schreiben eine Funktion nach den von Ihnen nachgedachten Zeilen, damit sie von allen Orten in Ihrem Code angerufen werden kann, an denen Sie solche Daten verarbeiten müssen.

Andere Tipps

Sie müssen alle möglichen Formate, die Sie unterstützen möchten, aufzählen-denken Sie daran, dass einige mehrdeutig sind (z. B. "10-11-2009" 10. November oder 11. Oktober?), So dass Ihr Code einen gegenüber dem anderen bevorzugen muss.

Wie Tony sagte, akzeptieren einige Formate eine Vielzahl von Eingaben : 00 ', '31/dez/2009 10:30', '31 Dezember 2009 ').

Abgesehen von diesen Vereinfachungen benötigen Sie eine Reihe von Ausnahme (Format1) (Format1), wenn andere dann beginnen (Format2) Ausnahme, wenn andere dann beginnen ....

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top