sql >> Database teknologi >  >> RDS >> Oracle

Sådan udtrækkes månedsnummer fra dato i Oracle

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 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


  1. SQL SELECT for begyndere

  2. Sådan viser du en dato som iso 8601-format med PHP

  3. Sådan ændres standarddatabasens mailprofil for en bruger i SQL Server (T-SQL)

  4. Problem med kyrilliske tegn i venlig url