Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách trích xuất số tháng từ ngày trong Oracle

Nếu giá trị là một số hoặc chuỗi thì bạn có thể chuyển đổi nó thành một ngày với một mặt nạ thích hợp - đó là thứ bạn đang thiếu và nguyên nhân gây ra lỗi mà bạn đang gặp phải (vì nó đang sử dụng mã NLS_DATE_FORMAT cài đặt, mà dường như không phù hợp với định dạng của dữ liệu; nhưng dù sao thì bạn cũng không nên dựa vào, như @MTO đã nói trong phần bình luận):

to_date(ID_BB_SECURITY, 'YYYYMMDD')

và sau đó trích xuất số tháng từ đó:

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

Hoặc bạn có thể chỉ sử dụng một chuỗi con:

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

Những giả định này giả định một định dạng nhất quán cố định, luôn là một giả định rủi ro khi sử dụng sai kiểu dữ liệu. Trả lời nếu đó là một số, họ đang thực hiện chuyển đổi ngầm định từ số thành chuỗi, điều này bạn có thể chuyển thành chuyển đổi rõ ràng để rõ ràng hơn.

Nếu đó đã là một ngày - tất nhiên là như vậy - thì bạn không cần chuyển đổi:

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. Oracle SQL Ghép nối các số tuần tự trái phải với số nhận dạng

  2. Oracle:Làm thế nào để phát hiện kết thúc quy trình máy khách giống như nó hoạt động đối với sqlplus?

  3. Giá trị ràng buộc mảng Oracle.DataAccess (ODP.NET) không nằm trong phạm vi mong đợi

  4. java.sql.SQLException:Io ngoại lệ:Đường ống bị hỏng làm thế nào để khôi phục mà không cần khởi động lại?

  5. Cách trích xuất số tháng từ ngày trong Oracle