[英]Bigquery Time as duration, convert to second
我對字符串的時間有疑問
總的來說,我的目標是從包含 HH:MM:SS 的持續時間 AS 字符串中獲取多少秒
00:01:00 -> 60
00:02:30 -> 150
01:00:00 -> 3600
我的查詢是這樣的
TIME_DIFF(CAST(duration AS TIME), '00:00:00', SECOND)
但是,上面的查詢不適用於超過 24:00:00 的持續時間是否有任何不同的解決方案可以得到
如果您想拆分超過 24 小時的“時間”值,那么我必須假設您的源數據是字符串而不是time
。 在 BigQuery 中,時間值必須小於 24 小時。
所以,使用字符串操作:
select (cast(split(hhmmss, ':')[ordinal(1)] as int64) * 60 * 60 +
cast(split(hhmmss, ':')[ordinal(2)] as int64) * 60 +
cast(split(hhmmss, ':')[ordinal(3)] as int64)
) as seconds
from (select '00:01:00' as hhmmss union all
select '00:02:30' union all
select '01:00:00') x
您可以嘗試另一種解析 TIMESTAMP DATA 的方法:-
WITH DATA AS(
SELECT '2019-05-03T00:01:00' AS F_DATE
UNION ALL
SELECT '2019-05-03T00:02:30'
UNION ALL
SELECT '2019-05-03T01:00:30'
)
select F_DATE, EXTRACT(HOUR FROM CAST( F_DATE AS TIMESTAMP)) * 60 *60 + EXTRACT(MINUTE FROM CAST(F_DATE AS TIMESTAMP)) * 60 + EXTRACT(SECOND FROM CAST(F_DATE AS TIMESTAMP)) AS DATE_SEC FROM DATA
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.