[英]Convert Teradata to Bigquery(GCP) . DAY() TO SECOND
我正在嘗試將 teradata 中的 DAY() TO SECOND 函數轉換為 GCP sql。 有人可以幫我轉換這個嗎?
AVERAGE(((run_end_dttm - run_start_dttm )DAY(4) TO SECOND )) AS elapsed_time,
如前所述,Bigquery 不支持實際上 Teradata DAY(4) TO SECOND
函數返回的INTERVAL
數據類型。
如果您的目標是獲得符合 Teradata 輸出格式的兩個時間戳之間的間隔差異, day hour:minute:second.millisecond
您可能會考慮編寫自己的 Bigquery UDF函數來實現這種轉換。
下面我將分享這種轉換的 Bigquery 函數原型,利用一些Timestamp和Time內置函數:
CREATE TEMP FUNCTION
time_conv(t1 timestamp,
t2 timestamp) AS ((
SELECT
FORMAT( '%d %d:%d:%d.%d', ABS(day), EXTRACT(hour
FROM
time(second)), EXTRACT(minute
FROM
time(second)), EXTRACT(second
FROM
time(second)), EXTRACT(millisecond
FROM
time(second)) ) AS output
FROM
UNNEST([STRUCT( TIMESTAMP_DIFF(t1,t2, day) AS day,
TIMESTAMP_SECONDS(TIMESTAMP_DIFF(t1,t2, second)) AS second )]) ));
WITH
`example` AS (
SELECT
TIMESTAMP("2021-10-19 21:45:21") AS t1,
TIMESTAMP("2021-10-15 18:17:56") AS t2 )
SELECT
time_conv(t1,
t2)
FROM
example
您還可以調整 Bigquery FORMAT()塊以獲得所需的輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.