Ниже для BigQuery Standard SQL
#standardSQL
SELECT
time,
CAST(time / 10000 AS INT64) AS time_hour,
MOD(CAST(FLOOR(time / 100) AS INT64), 100) AS time_minute,
MOD(time, 100 ) AS time_second
FROM `project.dataset.table`
Если применить к образцу данных из вашего вопроса - вывод
Row time time_hour time_minute time_second
1 2 0 0 2
2 10 0 0 10
3 111 0 1 11
4 1858 0 18 58
5 12316 1 23 16
6 234559 23 45 59
Выше дает целые числа - в то же время в вашем примере вывода похоже, что вы можете ожидать строки: (00
, 01
, et c.) - если так - используйте ниже
#standardSQL
SELECT
time,
y[OFFSET(1)] AS time_hour,
y[OFFSET(2)] AS time_minute,
y[OFFSET(3)] AS time_second
FROM `project.dataset.table`,
UNNEST([CAST(10000000 + time AS STRING)]) x,
UNNEST([STRUCT(REGEXP_EXTRACT_ALL(x, r'\d\d') AS y)])
с выводом
Row time time_hour time_minute time_second
1 2 00 00 02
2 10 00 00 10
3 111 00 01 11
4 1858 00 18 58
5 12316 01 23 16
6 234559 23 45 59