Bigquery - 整数到时间戳

时间:2016-09-08 06:33:26

标签: sql casting google-bigquery

我有一个整数20160115201307,我想转换为时间戳2016-01-15 20:13:07 UTC。我试过时间戳(日期),但是错误的日期为1970-08-22 08:01: 55 UTC有人建议我需要使用哪个查询?

2 个答案:

答案 0 :(得分:1)

这更可能是字符串而不是整数,您需要使用正则表达式将字符串解析为组件。

SELECT ds, 
   TIMESTAMP(REGEXP_REPLACE(ds, r'(....)(..)(..)(..)(..)(..)', r'\1-\2-\3 \4:\5:\6')) ts
FROM (SELECT '20160115201307 ' ds)

返回

+-----+----------------+-------------------------+--+
| Row | ds             | ts                      |  |
+-----+----------------+-------------------------+--+
| 1   | 20160115201307 | 2016-01-15 20:13:07 UTC |  |
+-----+----------------+-------------------------+--+

答案 1 :(得分:1)

使用标准SQL:

SELECT PARSE_TIMESTAMP('%Y%m%d%H%M%S', CAST(20160115201307 AS STRING))

表中有900条记录:

SELECT PARSE_TIMESTAMP('%Y%m%d%H%M%S', CAST(col AS STRING))
FROM `dataset.table`

启用标准SQL: