
ora-01841 to date
Publicado por ivan (3 intervenciones) el 07/11/2016 12:42:57
Hola ,que tal todo?
os queria pedir un pequeño consejo... llevo intntando realizar una tarea unos dias y la verdad es que me da un fallo a la hora de realizar un cast.
La cosa es que tengo una tabla. Con 5 campos, todos son string(el to number del final funciona, el fallo esta en el to_date)... y necesito crear otra tabla que modifique algunos de esos campos que son string a date. Pero hay algunos valores de fecha nulos , por ejemplo año 0000 o mes 00 o dia 00. por lo cual tengo este codigo.
create table tmp_mibebeyyo_core
as
select
cod_id,
cod_zipcode,
str_email,
to_date((case when (FEC_BIRTHDAYMOM) like '0000%' then null when (FEC_BIRTHDAYMOM) like '%-00%' then null else (FEC_BIRTHDAYMOM) end ),'YYYY-MM-DD')as FEC_BIRTHDAYMOM ,
to_date((case when (fec_birthdaybaby) like '0000-%' then '1990-10-01' when (fec_birthdaybaby) like '%-00%' then '1990-10-01' else (fec_birthdaybaby) end),'YYYY-MM-DD') as FEC_BIRTHDAYBABY ,
to_number(substr(md5(cast(cod_id || cod_zipcode || str_email || fec_birthdaymom || fec_birthdaybaby as varchar2(32))||'mibebeyyo'),10,16),
'xxxxxxxxxxxxxxxx') as cod_product
from
tmp_mibebeyyo;
El problema esta en el to_date... que parece ser que hace el cast antes de poner el valor nulo y me dice que el año 0000 no es valido (Error SQL: ORA-01841: el valor (completo) del año debe estar entre -4713 y +9999, y no debe ser igual a 0)
Puse que en vez de null fuera una fecha... pero no, sigue persistiendo el mismo error.... Algún consejo?
Muchas gracias.
os queria pedir un pequeño consejo... llevo intntando realizar una tarea unos dias y la verdad es que me da un fallo a la hora de realizar un cast.
La cosa es que tengo una tabla. Con 5 campos, todos son string(el to number del final funciona, el fallo esta en el to_date)... y necesito crear otra tabla que modifique algunos de esos campos que son string a date. Pero hay algunos valores de fecha nulos , por ejemplo año 0000 o mes 00 o dia 00. por lo cual tengo este codigo.
create table tmp_mibebeyyo_core
as
select
cod_id,
cod_zipcode,
str_email,
to_date((case when (FEC_BIRTHDAYMOM) like '0000%' then null when (FEC_BIRTHDAYMOM) like '%-00%' then null else (FEC_BIRTHDAYMOM) end ),'YYYY-MM-DD')as FEC_BIRTHDAYMOM ,
to_date((case when (fec_birthdaybaby) like '0000-%' then '1990-10-01' when (fec_birthdaybaby) like '%-00%' then '1990-10-01' else (fec_birthdaybaby) end),'YYYY-MM-DD') as FEC_BIRTHDAYBABY ,
to_number(substr(md5(cast(cod_id || cod_zipcode || str_email || fec_birthdaymom || fec_birthdaybaby as varchar2(32))||'mibebeyyo'),10,16),
'xxxxxxxxxxxxxxxx') as cod_product
from
tmp_mibebeyyo;
El problema esta en el to_date... que parece ser que hace el cast antes de poner el valor nulo y me dice que el año 0000 no es valido (Error SQL: ORA-01841: el valor (completo) del año debe estar entre -4713 y +9999, y no debe ser igual a 0)
Puse que en vez de null fuera una fecha... pero no, sigue persistiendo el mismo error.... Algún consejo?
Muchas gracias.
Valora esta pregunta


0