Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find out what data caused an Oracle error

I'm trying to run a select statement in SQL Developer that casts a field like 20160809 to a date. My query looks like:

select
  to_date(sale_date, 'YYYYMMDD') as sale_date
from properties

This is throwing an ORA-01839: date not valid for month specified. I've tried everything from substringing to regular expressions to try to deduce which value is causing the error, but no dice. Is there any way to execute this query and get the input to to_date that's causing it to fail?

like image 690
serverpunk Avatar asked Dec 05 '25 08:12

serverpunk


1 Answers

Create the table:

create table properties(sale_date varchar2(8));
insert into properties values ('20160228');
insert into properties values ('20160230'); 
insert into properties values ('xxxx');

If your table is not too big, you can try this:

declare
      d date;
  begin
      for i in (select * from properties) loop
          begin
              d:= to_date(i.sale_date, 'yyyymmdd');
          exception
              when others then
                  dbms_output.put_line('KO: "' || i.sale_date || '"');
          end;
      end loop;
  end;

OUTPUT:

KO: "20160230"
KO: "xxxx"
like image 188
Aleksej Avatar answered Dec 07 '25 22:12

Aleksej



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!