Hvis værdien er et tal eller en streng, kan du konvertere den til en dato med en passende maske - hvilket er det, du mangler, og hvad der forårsager den fejl, du får (da den bruger din sessions NLS_DATE_FORMAT-kode)> indstilling, som tilsyneladende ikke stemmer overens med formatet af dataene; men som du alligevel ikke skal stole på, som @MTO sagde i kommentarerne):
to_date(ID_BB_SECURITY, 'YYYYMMDD')
og derefter udtræk månedsnummeret fra det:
select extract(month from to_date(ID_BB_SECURITY, 'YYYYMMDD')) from BT_EXPORT
Eller du kan bare bruge en understreng:
select to_number(substr(ID_BB_SECURITY, 5, 2)) from BT_EXPORT;
Disse antager et fast konsistent format, hvilket altid er en risikabel antagelse, når du bruger den forkerte datatype. Og hvis det er et tal, laver de en implicit konvertering fra tal til streng, som du kan gøre til en eksplicit konvertering for større klarhed.
Hvis det allerede er en dato - som det selvfølgelig skal være - så behøver du ikke konverteringen:
select extract(month from ID_BB_SECURITY) from BT_EXPORT