Bir VARCHAR tarih dizesini, Flink çalışma zamanı ortamının saat diliminde bir TIMESTAMP değerine dönüştürür.
Söz dizimi
TIMESTAMP TO_TIMESTAMP_TZ(VARCHAR date, VARCHAR timezone)
TIMESTAMP TO_TIMESTAMP_TZ(VARCHAR date, VARCHAR format, VARCHAR timezone)
İlk sürüm, date parametresini varsayılan yyyy-MM-dd HH:mm:ss biçimini kullanarak ayrıştırır ve belirtilen timezone değerine göre yorumlar.
İkinci sürüm, timezone dönüşümünü uygulamadan önce giriş tarih dizesi için özel bir format belirtmenize olanak tanır.
Giriş parametreleri
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kullanım notları
timezoneparametresi için IANA saat dilimi adlarını kullanın. Standart olmayan bir değer sağlanırsa, parametre varsayılan olarak UTC'ye ayarlanır.formatparametresi yalnızca ikinci aşırı yükleme için geçerlidir. Varsayılan biçimyyyy-MM-dd HH:mm:ssşeklindedir.
Örnek
Aşağıdaki örnekte, Flink çalışma zamanı ortamının Asia/Shanghai saat diliminde (UTC+8) çalıştığı varsayılır.
Test verileri — T1 Tablosu
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Test ifadesi
SELECT
TO_TIMESTAMP_TZ(timestamp1, timezone1) AS var1, -- returns 1970-01-01 08:00:00
TO_TIMESTAMP_TZ(timestamp2, format2, timezone2) AS var2, -- returns 1970-01-01 00:00:00
TO_TIMESTAMP_TZ(timestamp3, format3, timezone3) AS var3 -- returns 1970-01-01 13:00:00
FROM T1;
Test sonucu
|
|
|
|
|
|
|
|
Sonuç açıklaması
var1:
timezone1değeri/olarak verilmiştir; bu standart dışı bir değerdir. İşlev UTC'ye geri döner.Asia/Shanghai(UTC+8) üzerindeki Flink çalışma zamanı, UTC epoch değeri olan1970-01-01 00:00:00değerini1970-01-01 08:00:00olarak gösterir.var2:
timezone2değeriAsia/Shanghaiolup Flink çalışma zamanı saat dilimiyle eşleşir. Giriş zatenAsia/Shanghaisaatindedir, bu nedenle TIMESTAMP değişmez:1970-01-01 00:00:00.var3:
timezone3değeriAmerica/New_York(UTC-5) olarak ayarlanmıştır. New York'taki gece yarısı, UTC'de1970-01-01 05:00:00değerine karşılık gelir; bu değer,Asia/Shanghai(UTC+8) üzerindeki Flink çalışma zamanında1970-01-01 13:00:00olarak görüntülenir.