bigQuery 不支持毫秒时间戳

Posted

技术标签:

【中文标题】bigQuery 不支持毫秒时间戳【英文标题】:bigQuery not supporting milliseconds timestamps 【发布时间】:2018-05-11 05:11:09 【问题描述】:

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

select * from <tablename> limit 1

它给了我错误

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

请帮忙

【问题讨论】:

【参考方案1】:

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

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

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

SELECT MSEC_TO_TIMESTAMP(1522865628160)

2018-04-04 11:13:48 UTC

【讨论】:

哦,问题是,我想将它用作基于日期的分区列,我唯一拥有的列是数据中的时间戳列,所以我想将其用作我的分区列。 @Nipun 这是一个完全不同的问题,可能属于这个问题以外的问题。如果您需要一个正式的时间戳列,请使用MSEC_TO_TIMESTAMP,或者创建一个新列并填充它。 让我为此添加一个单独的问题 你能帮我解决这个问题吗***.com/questions/50286217/…

以上是关于bigQuery 不支持毫秒时间戳的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Avro 文件加载到具有“时间戳”类型的列的 BigQuery 表中

如何在蜂巢中获得毫秒精度?

mysql5.5时间戳能不能精确到毫秒?

BigQuery 时间戳偏移量

从 bigQuery 中的时间戳聚合变量

INNER JOIN 基于彼此范围内的公共时间戳的两个 BigQuery 表?