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

ORA-01847 ngày trong tháng phải nằm trong khoảng từ 1 đến ngày cuối cùng của tháng - nhưng dữ liệu vẫn ổn

Đây là truy vấn của bạn với where mệnh đề:

select value1, to_date(value1,'DD.MM.YYYY') 
from variableindex 
where value1 is not null and
      value1 <> '0' and
      creation_time_ > to_timestamp('20140307', 'YYYYMMDD') and
      to_date(value1 'DD.MM.YYYY') < to_date('20140301', 'YYYYMMDD')
order by 2;

Oracle không đảm bảo thứ tự xử lý các mệnh đề trong where . Vì vậy, value <> '0' không được đảm bảo để chạy trước điều kiện cuối cùng. Đây là một vấn đề lớn trên SQL Server. Một giải pháp là sử dụng case tuyên bố:

select value1,to_date(value1, 'DD.MM.YYYY') 
from variableindex 
where value1 is not null and
      value1 <> '0' and
      creation_time_ > to_timestamp('20140307', 'YYYYMMDD') and
      (case when value <> '0' then to_date(value1, 'DD.MM.YYYY') end) <
          to_date('20140301', 'YYYYMMDD')
order by 2;

Khá xấu, nhưng nó có thể giải quyết vấn đề của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thay đổi Cổng Web trong EBS 12.2

  2. Trong WiX, làm cách nào để kiểm tra sự tồn tại của khóa đăng ký (không phải giá trị) cho Oracle ODP.Net

  3. Xoay / xoay bảng với tổng hợp trong Oracle

  4. đen không khớp với lỗi chuỗi định dạng khi cập nhật bảng sql

  5. count (*) không thể được chọn trong PL / SQL