Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да извлечете номера на месеца от датата в Oracle

Ако стойността е число или низ, тогава можете да я преобразувате в дата с подходяща маска - което е това, което пропускате и какво причинява грешката, която получавате (тъй като използва NLS_DATE_FORMAT на вашата сесия> настройка, която очевидно не отговаря на формата на данните; но на които така или иначе не трябва да разчитате, както каза @MTO в коментарите):

to_date(ID_BB_SECURITY, 'YYYYMMDD')

и след това извлечете номера на месеца от това:

select extract(month from to_date(ID_BB_SECURITY, 'YYYYMMDD')) from BT_EXPORT

Или можете просто да използвате подниз:

select to_number(substr(ID_BB_SECURITY, 5, 2)) from BT_EXPORT;

Те предполагат фиксиран последователен формат, което винаги е рисковано допускане при използване на грешен тип данни. И ако това е число, те извършват неявно преобразуване от число в низ, което можете да превърнете в изрично преобразуване за по-голяма яснота.

Ако вече е дата - както трябва да бъде, разбира се - тогава нямате нужда от преобразуването:

select extract(month from ID_BB_SECURITY) from BT_EXPORT


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Предаване на съхранена процедура от SQL Server към ORACLE свързан сървър

  2. SQL Oracle - Комбиниране на последователни редове с филтър

  3. ORDER BY с вътрешна заявка, като ORA-00907 липсва дясна скоба

  4. ORACLE SQL Диапазон от часове

  5. Преобразуване на Oracle заявка в потребителски дефинирани типове в pl/sql