Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cara mengekstrak nomor bulan dari tanggal di Oracle

Jika nilainya adalah angka atau string maka Anda dapat mengonversinya menjadi tanggal dengan topeng yang sesuai - yang Anda lewatkan, dan apa yang menyebabkan kesalahan yang Anda dapatkan (karena menggunakan NLS_DATE_FORMAT pengaturan, yang ternyata tidak sesuai dengan format data; tetapi yang tidak boleh Anda andalkan, seperti yang dikatakan @MTO dalam komentar):

to_date(ID_BB_SECURITY, 'YYYYMMDD')

lalu ekstrak nomor bulan dari itu:

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

Atau Anda bisa menggunakan substring:

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

Mereka mengasumsikan format tetap yang konsisten, yang selalu merupakan asumsi berisiko saat menggunakan tipe data yang salah. Dan jika itu adalah angka, mereka melakukan konversi implisit dari angka ke string, yang dapat Anda ubah menjadi konversi eksplisit untuk kejelasan yang lebih baik.

Jika sudah tanggal - sebagaimana mestinya, tentu saja - maka Anda tidak memerlukan konversi:

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 Oracle - Menggabungkan baris berurutan dengan filter

  2. Bagaimana mengatasi ORA-02014:tidak dapat memilih UNTUK PEMBARUAN dari tampilan dengan DISTINCT, GROUP BY

  3. SQL untuk secara otomatis menghasilkan tanggal dan harga yang hilang dari tanggal sebelumnya untuk tanggal yang hilang dalam tabel

  4. Terus mendapatkan konten dari database tabel

  5. Kinerja SQL dinamis vs prosedur tersimpan di Oracle