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 不支持毫秒时间戳的主要内容,如果未能解决你的问题,请参考以下文章