es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir una cadena JSON a tipo de dato Date con Postgres

Estoy extrayendo una fecha de un arreglo JSON llamado closeDate, utilizando una subconsulta con data->>'closeDate' como PortalCloseDate, lo cual devuelve una cadena con el formato de fecha YYYY-MM-DD. Estoy intentando convertirlo a una fecha. Cuando retorno la columna, he intentado cast(cls.PortalCloseDate as date) y obtengo el mensaje de error: ERROR: sintaxis de entrada no válida para el tipo date: “‎2020-‎12-‎09”

También he intentado to_date(cls.PortalCloseDate,'YYYY-MM-DD') y to_date(replace(cls.PortalCloseDate,'-',''),'YYYYMMDD') pero obtengo el mensaje de error: ERROR: valor no válido “‎2” para “YYYY” Detalle: El valor debe ser un número entero.

Necesito que esto sea un tipo de dato fecha, ya que estoy utilizando cálculos para encontrar el tiempo entre dos fechas. Cualquier ayuda es apreciada.

Edit: Exporté a CSV y hay algunas fechas con un formato diferente al resto. fechas en csv Para la mayoría de las fechas, se colocaron automáticamente en un tipo de dato fecha, pero para la fila con la fecha 2020-12-09, se encontraba en un formato general. Adjunto una captura de pantalla del CSV.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema con la conversión de la fecha se debe a que los datos no están en el formato esperado. El mensaje de error sugiere que puede haber algunos caracteres no numéricos en la cadena de fecha, lo que está causando que falle la conversión.

    Una cosa que puedes intentar es verificar el formato exacto de la cadena de fecha utilizando la función to_char() en PostgreSQL. Por ejemplo, puedes ejecutar la siguiente consulta para ver cómo se está interpretando la cadena de fecha:

    SELECT to_char('2020-12-09', 'YYYY-MM-DD');
    

    Esto debería devolver la misma cadena que la entrada, lo que confirma que PostgreSQL puede interpretar correctamente la fecha.

    Si la salida no es la esperada, es posible que debas ajustar la cadena de formato para que coincida con el formato real de la cadena de fecha. Puedes encontrar más información sobre la función to_char() en la documentación de PostgreSQL aquí.

    Una vez que hayas confirmado el formato de la cadena de fecha, puedes utilizar la función to_date() con la cadena de formato correcta para convertir la cadena en una fecha. Por ejemplo, si el formato es YYYY-MM-DD, puedes utilizar la siguiente consulta:

    SELECT to_date('2020-12-09', 'YYYY-MM-DD');
    

    Esto debería devolver un valor de fecha que se puede utilizar en tus cálculos.

    Si sigues teniendo problemas con la conversión, puede ser útil revisar los datos en más detalle para ver si hay otros problemas. La captura de pantalla del CSV que proporcionaste muestra que algunas de las fechas están en un formato diferente que otras, lo que podría estar causando problemas con la conversión. Es posible que debas limpiar los datos antes de convertirlos para asegurarte de que estén en un formato consistente.

Comments are closed.