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

ORA-01847 hari dalam sebulan harus antara 1 dan hari terakhir dalam sebulan - tetapi datanya OK

Ini adalah kueri Anda dengan where klausa:

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 tidak menjamin urutan pemrosesan klausa di where . Jadi, value <> '0' tidak dijamin berjalan sebelum kondisi terakhir. Ini terjadi menjadi masalah besar pada SQL Server. Salah satu solusinya adalah dengan menggunakan case pernyataan:

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;

Agak jelek, tapi itu mungkin bisa menyelesaikan masalah Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memilih nilai unik dari tabel?

  2. Pertanyaan Berguna tentang kedaluwarsa kata sandi oracle EBS/Kebijakan/Pengaturan

  3. Argumen String Koneksi Tidak Valid Keamanan Terintegrasi ODP.NET

  4. Cara mengimpor data ke tablespace tertentu

  5. Menangani Null dalam fungsi Terbesar di Oracle