以小时为单位的连接时间:Bigquery 的分钟

Posted

技术标签:

【中文标题】以小时为单位的连接时间:Bigquery 的分钟【英文标题】:Concat time in hr:min for Bigquery 【发布时间】:2019-01-28 19:38:57 【问题描述】:

在大查询中将时间连接在一起,但它不允许我使用它。

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;浮点64 + 浮点64; NUMERIC + NUMERIC 在 [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

【问题讨论】:

【参考方案1】:

以下是 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`  

【讨论】:

我在运行您建议的查询时出错,输入计算到无效时间:24:00:00 您应该发布新问题,其中包含有关该特定问题的详细信息以及导致该错误的确切示例数据和您正在运行的确切查询 - 这样我们将能够进一步帮助您 - 但在此之前 - 只需尝试解决自己 - 很可能与 FORMAT_TIME() 中的格式字符串有关 - 但这只是盲目猜测 好的,我试过了,但运气不好,如果你想看的话,我在这里***.com/questions/54635785/… 提出了新问题。谢谢

以上是关于以小时为单位的连接时间:Bigquery 的分钟的主要内容,如果未能解决你的问题,请参考以下文章

给定熊猫中只有小时-分钟-秒格式的列,如何以秒为单位返回总时间? [关闭]

如何获得以秒或分钟或小时为单位的时差? [复制]

尝试从一组 30 分钟的时间间隔中获取以小时为单位的开始和结束时间,但某些结果未正确返回

如何在反应中将分钟转换为小时和分钟

在 Excel 中,我需要以天小时分钟秒为单位转换秒数

陈天艺1636050045假设跑步者1小时40分钟35秒跑了24英里。编写一个程序显示每小时以公里为单位的平均速度值