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

ORACLE - ORA-01843:không phải là tháng hợp lệ

Nhìn vào dòng:

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

Sau đó '08/03/2015''08/03/2016' là các ký tự chuỗi và không phải là ngày tháng.

Oracle sẽ cố gắng chuyển đổi ngầm định từ một chuỗi ký tự thành một ngày bằng cách sử dụng NLS_DATE_FORMAT của bạn tham số phiên làm mặt nạ định dạng và nếu điều này không hoạt động, nó sẽ gây ra lỗi.

Giải pháp đơn giản là không sử dụng các ký tự chuỗi mà thay vào đó sử dụng các ký tự ngày:

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

Nhưng bạn cũng có thể chỉ định mặt nạ định dạng:

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. Nhận CHIỀU DÀI CỦA NGUYÊN LIỆU DÀI

  2. Đảo ngược trong Oracle đường dẫn này z / y / x thành x / y / z

  3. Gọi một THỦ TỤC được lưu trữ trong Toad

  4. Gọi thủ tục lưu trữ Oracle từ C #?

  5. tiêu chí tìm kiếm khác biệt giữa Like và Contains () trong oracle