Jeśli wartość jest liczbą lub ciągiem, możesz przekonwertować ją na datę z odpowiednią maską — czego brakuje i co powoduje błąd, który otrzymujesz (ponieważ używa NLS_DATE_FORMAT
ustawienie, które najwyraźniej nie pasuje do formatu danych; ale na które i tak nie powinieneś polegać, jak powiedział @MTO w komentarzach):
to_date(ID_BB_SECURITY, 'YYYYMMDD')
a następnie wyodrębnij numer miesiąca z tego:
select extract(month from to_date(ID_BB_SECURITY, 'YYYYMMDD')) from BT_EXPORT
Możesz też po prostu użyć podciągu:
select to_number(substr(ID_BB_SECURITY, 5, 2)) from BT_EXPORT;
Zakładają one stały spójny format, co zawsze jest ryzykowne w przypadku użycia niewłaściwego typu danych. Jeśli jest to liczba, dokonują niejawnej konwersji z liczby na ciąg, którą można przekształcić w jawną konwersję dla większej przejrzystości.
Jeśli jest to już data - tak jak powinna być, oczywiście - nie potrzebujesz konwersji:
select extract(month from ID_BB_SECURITY) from BT_EXPORT