簡體   English   中英

將 Teradata 轉換為 Bigquery(GCP)。 DAY() 到秒

[英]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 函數原型,利用一些TimestampTime內置函數:

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.

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