2017-05-03 3 views
0

Ich habe ein Varchar-Feld als: MON-YYYY.Holen Sie die Monatsnummer aus dem Monatsnamen

Ich muss die Monatsnummer aus dem Feld extrahieren. Ex: April 2017.

Erwartete Ausgabe: 04

Sicher, da wir nur 12, kann ich einen Teil und Fall zu tun, sondern versuche, es in einem Schuss zu tun mit dem unten:

to_char(to_date(Period,'MON YYYY'),'MM') as Month 

hält in Fehler läuft -Numerisch wo nicht-numerischen gefunden wird erwartet, usw.

Was ist hier falsch? Gibt es einen anderen einfacheren Weg, um "04" vom April 2017 zu bekommen

+0

Sie tun das richtig. Konvertieren Sie Ihre Zeichenfolge in ein Datum und führen Sie dann to_char, um den numerischen Wert des Monats zu erhalten. Du bist der Fehler kommt von etwas anderem. Können Sie den Code um diesen und den tatsächlichen Fehler, den Sie erhalten, bereitstellen? – unleashed

+0

Ich vermute, dass Sie Zeichenfolgenwerte in Ihrer Spalte haben, die nicht in dem von Ihnen erwarteten Format sind. –

Antwort

0

Überprüfen Sie Ihre Orakel Sprache, so scheint es in eine andere zu sein.

Da versuchen, im mit diesem Code:

select to_char(to_date('ABR 1990','MONTH yyyy'), 'mm') as MONTH from dual; 

und ich bekomme:

Result

Hinweis: Meine Muttersprache ist Spanisch.

1

Was ist mit der Funktion EXTRACT?

http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions050.htm

EXTRACT(MONTH FROM to_date(Period,'MON YYYY'),'MM') as Month 
+0

Ich bekomme eine "fehlende rechte Klammer" dazu. Ich glaube, du hast die Paren vom Format to_char und to_char behalten, als du sie von der Frage konvertiert hast. – unleashed

+0

Sie sind richtig, mein Fehler, in der Klammer von Ihrem Beitrag verlassen. –

+0

Sie sind auch im ', 'MM'' Teil geblieben ... –

Verwandte Themen