簡體   English   中英

Bigquery 的 hr:min 連接時間

[英]Concat time in hr:min for Bigquery

在大查詢中將時間連接在一起,但它不允許我使用它。

IF(CAST(TRUNC(timestart/60) AS INT64) <= 12,
CAST(TRUNC(timestart/60) AS INT64),
CAST(TRUNC(timestart/60) AS INT64) - 12) AS hour,
MOD(timestart, 60) AS minutes,
IF(CAST(TRUNC(timestart/60) AS INT64) < 12,
'AM',
'PM') AS timetype,

做康卡特

concat(IF(CAST(TRUNC(timestart/60) AS INT64) <= 12,
CAST(TRUNC(timestart/60) AS INT64),
CAST(TRUNC(timestart/60) AS INT64) - 12)+':'+
MOD(timestart, 60)) AS tbegin,

錯誤:沒有與運算符 + 的參數類型匹配的簽名:INT64、STRING。 支持的簽名:INT64 + INT64; FLOAT64 + FLOAT64; [5:10] 數字 + 數字

如何在 bigquery 中連接時間

Row scheduleid  timestart   timeduration    hour    minutes timetype     
1   35319        600          60             10         0   AM   
2   69682        960           30            4          0   PM   
3   186862      1020          30            5          0    PM   
4   346371      1020          60            5           0   PM

下面是 BigQuery 標准 SQL

#standardSQL
SELECT 
  FORMAT_TIME('%r', TIME(DIV(timestart, 60), MOD(timestart, 60), 0)) AS tbegin
FROM `project.dataset.table`  

您可以使用問題中的示例數據進行測試和使用,如下例所示

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 35319 scheduleid, 600 timestart, 60 timeduration, 10 hour, 0 minutes, 'AM' timetype UNION ALL
  SELECT 69682, 960, 30, 4, 0, 'PM' UNION ALL
  SELECT 186862, 1020, 30, 5, 0, 'PM' UNION ALL
  SELECT 346371, 1020, 60, 5, 0, 'PM' 
)
SELECT *,
  FORMAT_TIME('%r', TIME(DIV(timestart, 60), MOD(timestart, 60), 0)) AS tbegin
FROM `project.dataset.table`   

結果

Row scheduleid  timestart   timeduration    hour    minutes timetype    tbegin   
1   35319       600         60              10      0       AM          10:00:00 AM  
2   69682       960         30              4       0       PM          04:00:00 PM  
3   186862      1020        30              5       0       PM          05:00:00 PM  
4   346371      1020        60              5       0       PM          05:00:00 PM  

更新:

解決 24:00:00 問題

#standardSQL
SELECT 
  TIME(TIMESTAMP_ADD(TIMESTAMP(CURRENT_DATE()), INTERVAL timestart MINUTE)) AS tbegin
FROM `project.dataset.table`  

暫無
暫無

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

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