簡體   English   中英

如何在 Flink SQL 中將 TZ 日期時間轉換為時間戳(3)

[英]How to convert a TZ Datetime to Timestamp(3) in Flink SQL

如何在 Flink SQL v1.13 中將帶有TZ的 DateTime 轉換為 Timestamp(3)?

TO_TIMESTAMP('2021-12-16T20:29:37Z', 'yyyy-MM-dd HH:mm:ss') //returns NULL
TO_TIMESTAMP('2021-12-16 20:29:37', 'yyyy-MM-dd HH:mm:ss') //returns 2021-12-16T20:29:37
TO_TIMESTAMP('2021-12-16T20:29:37', 'yyyy-MM-dd HH:mm:ss') //returns NULL, which is silly because this was the result from the 2nd example

它不接受T and Z ,但是“干凈”日期的轉換結果具有T 但是如果我嘗試反向操作,它會返回 null。

Flink 知道兩種字符串格式的時間戳表示: SQLISO-8601

SQL 一個跟隨2021-12-16 20:29:37 TO_TIMESTAMP 它也是CAST(ts AS STRING)的結果。

ISO-8601 遵循2021-12-16T20:29:37並且可能會被未來的內置實用程序函數所接受。

問題是:如何通過打印“離開 SQL 世界”? 如果你留在 table 生態系統中並調用table.execute().print()未來的 Flink 版本將打印 SQL 格式。 SQL 客戶端也將執行此操作。 至少這將是 Flink 1.15 中的行為,並且可能已經是 Flink 1.14 中的情況。

如果您執行table.execute().collect().forEach(println)您打印“通過 Java 世界”,這意味着java.time.LocalDateTime.toString被調用,它使用 ISO-8601 格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM