Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-01847 денят от месеца трябва да е между 1 и последния ден от месеца - но данните са ОК

Това е вашата заявка с where клауза:

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 не гарантира реда на обработка на клаузите в where . И така, value <> '0' не е гарантирано, че ще се изпълнява преди последното условие. Това се оказва голям проблем на SQL Server. Едно решение е да използвате case изявление:

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;

Доста грозно, но може просто да реши проблема ви.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle ODP.Net с Entity Framework 6 - ORA-00955 на Избор от табличен изглед

  2. ScaleGrid добавя Oracle Cloud за хостване на управлявани бази данни

  3. Странно поведение на пълно външно присъединяване в Oracle - как може да се обясни?

  4. Грешка 404 не е намерена с EM 12c

  5. Bool поддръжка на Oracle SQL