select to_date('20170202','YYYYMMDD');devoluciones:
2017-02-02pero cuando lo hago:
select to_date('20172202','YYYYMMDD');la salida es:
2018-10-04cuando el mes es incorrecto, ¿por qué no devuelve un error como en Oracle?
Creo que aquí hay una razón por la que esto no causa un error:
to_timestamp y to_date existen para manejar formatos de entrada que no se pueden convertir mediante una conversión simple. Estas funciones interpretan la entrada libremente, con una verificación mínima de errores. Si bien producen una salida válida, la conversión puede producir resultados inesperados. Por ejemplo, la entrada a estas funciones no está restringida por rangos normales, por lo que to_date('20096040','YYYYMMDD') devuelve 2014-01-17 en lugar de causar un error. Casting no tiene este comportamiento.
https://www.postgresql.org/docs/9.6/static/functions-formatting.html
Ahora este comando genera un error (este problema se solucionó en PostgreSQL 10):
postgres=# select to_date('20172202','YYYYMMDD'); ERROR: date/time field value out of range: "20172202"tengo una respuesta de lo que quería/utilicé to_char en lugar de to_date y puse el primer parámetro en date..
select to_char(DATE '20162202,'YYYYMMDD') into datResult ;entonces ahora puedo tener un error ..
gracias por su ayuda a todos