【问题标题】:How can I convert YYYYMMDD to YYYY-MM-DDT00:00:00+00:00 in BigQuery?如何在 BigQuery 中将 YYYYMMDD 转换为 YYYY-MM-DDT00:00:00+00:00?
【发布时间】:2016-09-24 18:50:58
【问题描述】:

我有一列以“标准 SQL”格式 (YYYYMMDD) 填充日期,但我需要它采用 CartoDB 接受的格式 (YYYY-MM-DDT00:00:00+00:00)。

我最初的想法是 BQ 会有一个类似于 to_datetime(variable, format) 的函数,但它似乎没有。

我的第二个想法是我应该使用正则表达式,但 BQ 使用RE2。我没有使用 RE2 的经验,也无法解析文档。有更多 RE2 经验的人可以帮助我,或推荐不同的方法吗?

【问题讨论】:

    标签: regex date google-bigquery


    【解决方案1】:

    试试下面
    BigQuery 旧版 SQL

    SELECT
      x,
      STRFTIME_UTC_USEC(x, '%Y-%m-%d') + 'T00:00:00+00:00' AS y
    FROM
    (SELECT '20160526' AS x)
    

    BigQuery 标准 SQL

    SELECT
      x,
      FORMAT_TIMESTAMP("%Y-%m-%d %H:%M:%E6S%z", PARSE_TIMESTAMP("%Y%m%d", x )) AS y
    FROM
    (SELECT '20160526' AS x)
    

    【讨论】:

    • FORMAT_TIMESTAMP 未被识别为函数。 STRFTIME_UTC_USEC 是,但只是返回“1970-01-01T00:00:00+00:00”。我尝试将 '%Y-%m-%d' 替换为 '%Y%m%d'(因为我的格式是 YYYYMMDD),但无济于事。
    • 请注意:第二个示例适用于 BigQuery 标准 SQL 版本 - 您应取消选中 Web UI 中显示选项下的使用旧 SQL 复选框。再试一次 - 它确实有效:o)
    • 'Projectile.datasetid.tableid'
    • `gdelt-bq.gdeltv2.events` 准确地说
    • 您可以使用已发布答案左侧、投票下方的勾号来标记已接受的答案。请参阅 meta.stackexchange.com/questions/5234/... 了解为什么它很重要!对答案进行投票也很重要(如果还没有)。投票选出有帮助的答案。还有更多......您可以检查当有人回答您的问题时该怎么做 - stackoverflow.com/help/someone-answers。如果您发现此答案有用并解决了您的问题 - 请执行 :o)
    猜你喜欢
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2020-08-28
    • 2014-12-02
    • 2020-11-11
    • 2019-08-25
    • 2021-06-23
    • 2022-11-03
    相关资源
    最近更新 更多