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

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

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

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

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

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

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

【问题讨论】:

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

标签: sql google-bigquery


【解决方案1】:

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

select TIMESTAMP_SECONDS(1606048220)

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

Documentation

【讨论】:

    【解决方案2】:

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

    只是日期:

    select date(timestamp_seconds(col))
    

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

    【讨论】:

      猜你喜欢
      • 2020-02-13
      • 2019-07-20
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 2018-01-07
      • 2020-10-08
      • 2018-05-15
      相关资源
      最近更新 更多