首页 > 解决方案 > 语法错误:应为“)”,但在 [62:23] 获得标识符“ciclos”

问题描述

我尝试进行 2 次转换,如下所示:

select TIME_DIFF(TIME ciclos.hora_inicio, TIME ciclos.hora_fin, MINUTE) as diferencia from 
  (select 
     split(split(document_name, '/ciclos/')[OFFSET(1)], '/eventos/')[OFFSET(0)] as id_ciclo, 
     REPLACE(JSON_EXTRACT(data, '$.codigo'), '"', '') as codigo, 
     REPLACE(JSON_EXTRACT(data, '$.hora_fin'), '"', '') as hora_fin,  
     REPLACE(JSON_EXTRACT(data, '$.hora_inicio'), '"', '') as hora_inicio,  
   from `fleetpas-34c3d.eventos.flet_raw_changelog`
   where document_id = 'XPr9cyA9yn3U51rvRANQ'
  ) as ciclos

https://roboquery.com/app/syntax-time-diff-function-bigquery

标签: google-bigquery

解决方案


改为使用以下(BigQuery 标准 SQL)

TIME_DIFF(PARSE_TIME('%T', ciclos.hora_inicio), PARSE_TIME('%T', ciclos.hora_fin), MINUTE)    

注意:假设(根据您的评论) hora_inicio 和 hora_fin 的格式类似于 '06:45:18'


推荐阅读