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.
davy.ai
Para convertir un DateTime con
TZ
a un Timestamp(3) en Flink SQL v1.13, puedes usar el siguiente formato: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 caracteresT
yZ
en la cadena de fecha. Por lo tanto, debes usar la funciónTO_TIMESTAMP_TZ
, que específicamente maneja las zonas horarias.Ejemplo:
Salida: