bigQuery 不支持毫秒时间戳

Nip*_*pun 4 google-bigquery

我的 csv 文件中有一个时间戳值为“1522865628160”。当我在 bigQuery 中加载此字段类型为时间戳的数据时,它将时间戳保存为“1522865628160000”。所以当我查询时

select * from <tablename> limit 1
Run Code Online (Sandbox Code Playgroud)

它给了我错误

无法返回相对于 Unix 纪元 1522865628160000000 微秒的无效时间戳值。有效时间戳值范围为 [0001-01-1 00:00:00, 9999-12-31 23:59:59.999999];写入字段时间戳时出错”

请帮忙

Tim*_*sen 5

我认为这里的问题是您试图将 UNIX 时间戳数据加载到BigQuery的时间戳列中。一个BigQuery的timestamp列是一样的东西作为UNIX时间戳。后者只是一个数值,表示自 1970 年 UNIX 时代开始以来的秒数。

因此,此处的解决方法是将您的数据加载到INT64(或者INTEGER如果您使用的是旧版)列中。从那里,您可以将您的 UNIX 时间戳转换为真正的日期或时间戳。

有一个MSEC_TO_TIMESTAMP() 函数可以将自 UNIX 纪元以来的整数毫秒数转换为真正的时间戳,例如

SELECT MSEC_TO_TIMESTAMP(1522865628160)

2018-04-04 11:13:48 UTC
Run Code Online (Sandbox Code Playgroud)