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.

Cómo convertir un TZ Datetime a un Timestamp(3) en Flink SQL

¿Cómo se convierte un DateTime con la TZ en un Timestamp(3) en Flink SQL v1.13?


TO_TIMESTAMP('2021-12-16T20:29:37Z', 'yyyy-MM-dd HH:mm:ss') //retorna NULL


TO_TIMESTAMP('2021-12-16 20:29:37', 'yyyy-MM-dd HH:mm:ss') //retorna 2021-12-16T20:29:37


TO_TIMESTAMP('2021-12-16T20:29:37', 'yyyy-MM-dd HH:mm:ss') //retorna NULL, lo cual es absurdo porque este fue el resultado del segundo ejemplo

No acepta la T y Z, sin embargo, el resultado de la conversión para una fecha “limpia” tiene la T. Pero si intento la operación inversa, retorna null.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para convertir un DateTime con TZ a un Timestamp(3) en Flink SQL v1.13, puedes usar el siguiente formato:

    TO_TIMESTAMP_TZ('2021-12-16T20:29:37Z', 'yyyy-MM-dd''T''HH:mm:ss''Z''', '+00:00')
    

    Esto convertirá el DateTime dado con TZ al Timestamp(3) correspondiente. El +00:00 al final especifica el desplazamiento de la zona horaria a tener en cuenta durante la conversión.

    Ten en cuenta que la función TO_TIMESTAMP no acepta los caracteres T y Z en la cadena de fecha. Por lo tanto, debes usar la función TO_TIMESTAMP_TZ, que específicamente maneja las zonas horarias.

    Ejemplo:

    SELECT TO_TIMESTAMP_TZ('2021-12-16T20:29:37Z', 'yyyy-MM-dd''T''HH:mm:ss''Z''', '+00:00')
    

    Salida:

    2021-12-16 20:29:37.000
    

Comments are closed.