在bigquery中转换整个表的时间戳

Posted

技术标签:

【中文标题】在bigquery中转换整个表的时间戳【英文标题】:Converting timestamp on whole table in bigquery 【发布时间】:2020-11-22 10:54:49 【问题描述】:

我有一张存储数百万行数据的表。该数据具有指示数据输入时间的日期。我将数据存储在NUMERIC 模式中,格式为EPOCH UNIX。但是,我想将它们转换为人类日期(yyyy-mm-dd hh:mm:ss),然后按日期而不是查询日期对它们进行排序。

但是,我花了很长时间才找到合适的方法。这是我的尝试。

    我使用了SELECT CAST(DATE(timestamp) AS DATE) AS CURR_DT FROM dataset.table,但它给了我这个错误:

    对于参数类型的函数 DATE 没有匹配的签名:NUMERIC。支持的签名:DATE(TIMESTAMP, [STRING]);日期(日期时间);日期(INT64,INT64,INT64)在 [1:13]

    我用了BigQuery: convert epoch to TIMESTAMP这个方法但是还是没完全明白

我是编码新手,所以希望你们了解情况。谢谢!

【问题讨论】:

你对那个答案有什么不明白的地方?它似乎回答了你的问题,这使得它重复了。顺便说一下,按日期和 Unix 纪元排序是一回事。 【参考方案1】:

如果我正确理解了您的问题,您是否希望采用一个数字 EPOCH 时间,该时间存储为整数并将其转换为时间戳? 如果是这样,您可以在 BigQuery 标准 SQL 中使用以下内容:

select TIMESTAMP_SECONDS(1606048220)

它给出以下输出: 2020-11-22 12:30:20 UTC

Documentation

【讨论】:

【参考方案2】:

如果您只想要日期组件,那么您将在转换为时间戳后转换为日期。大概你有秒数,所以你会使用TIMESTAMP_SECONDS()——但毫秒和微秒有类似的函数。

只是日期:

select date(timestamp_seconds(col))

请注意,这会删除时间组件。

【讨论】:

以上是关于在bigquery中转换整个表的时间戳的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BigQuery 标准 SQL 中将时间戳转换为秒

将 unix 时间戳转换为 avro 并将其存储在 BigQuery 中

将时间戳转换为特定时区然后在 bigquery 中将其转换为日期时出现问题

BigQuery 自动将时间戳时区转换为 UTC

BigQuery 中的优雅时区转换

使用特定时间戳列将 CSV 导入 BigQuery 上的分区表?