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

ORACLE - ORA-01843:bukan bulan yang valid

Melihat baris:

OD.DATE2 BETWEEN '08/03/2015' AND '08/03/2016'

Kemudian '08/03/2015' dan '08/03/2016' adalah literal string dan bukan tanggal.

Oracle akan mencoba konversi implisit dari string literal ke tanggal menggunakan NLS_DATE_FORMAT Anda parameter sesi sebagai topeng format dan jika ini tidak berhasil, itu akan menimbulkan kesalahan.

Solusi sederhananya adalah tidak menggunakan literal string tetapi menggunakan literal tanggal sebagai gantinya:

SELECT 'M'||to_char( DATE2, 'MM' ) PERIODE,
        count(*) DATA,
        DCCPT
FROM    BDD
WHERE   BDD   = 'phone'
AND     SENS  = 'Ent'
AND     DCCPT IN ( 'PIOLUC' )
AND     DATE2 BETWEEN DATE '2015-03-08' AND DATE '2016-03-08'
GROUP BY
        'M'||to_char( DATE2, 'MM' ),
        DCCPT

Tapi Anda juga bisa menentukan format mask:

OD.DATE2 BETWEEN TO_DATE( '08/03/2015', 'DD/MM/YYYY' ) AND TO_DATE( '08/03/2016', 'DD/MM/YYYY' )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menjalankan Create Table DDL Dengan EXECUTE IMMEDIATE Di Oracle Database

  2. Bagaimana cara kerja contain() dalam PL-SQL?

  3. Oracle PL/SQL:Contoh SQL Dinamis Menggunakan Execute Immediate

  4. 6 Cara Menghapus Baris Duplikat yang memiliki Kunci Utama di Oracle

  5. KASUS vs. DECODE