【问题标题】:BigQuery Date Conversion From String从字符串转换 BigQuery 日期
【发布时间】:2018-04-12 02:15:16
【问题描述】:

我到处找,找不到这个答案。这是一个非常简单的查询,但我一生都无法弄清楚如何更改日期。

我有一个日期作为字符串输入,但它没有被拾取。日期被输入为 20170601,但我需要它采用日期格式,以便在 Tableau 中获取。我正在使用标准 SQL 并尝试将 PARSE_DATE("%x", date) as parsedcast(date as date) 等,但我不断得到 错误:无法解析输入字符串“20170918”或该错误的某些变体。

#standardSQL SELECT visitorid, parse_DATE("%x", date) AS parse FROMgoogle.com:analytics-bigquery.LondonCycleHelmet.ga_sessions_20130910

表格在`

请指教!!

【问题讨论】:

  • Tableau 需要什么格式?您当前是将日期存储为文本还是数字?
  • 如果您能提供Minimal, Complete, and Verifiable example,那就太好了。
  • @TimBiegeleisen Tableau 需要某种 DD/MM/YYYY,而我认为缺少 / 是问题所在。我已经尝试过 "%f" 和 "%y/%m%d" 但我仍然遇到同样的错误。在 BigQuery 中,它作为字符串被引入并按原样存储,因为我无法将其转换为日期(不确定这是否回答了第二个问题?)。
  • @NightOwl888 谢谢!这是我的第一篇文章。我已经用简化版的查询更新了问题。
  • @NightOwl888 这里更大的问题是不清楚导入 Tableau 失败的原因。如果您不知道输出应该是什么,则无法编写查询(尽管我在下面进行了猜测)。

标签: date google-bigquery bigquery-standard-sql


【解决方案1】:

您可以尝试使用正则表达式替换来构建您需要的日期字符串:

SELECT
    REGEXP_REPLACE('20170601', r"^([0-9]{4})([0-9]{2})([0-9]{2})", "\\1/\\2/\\3")

这将输出2017/06/01,这可能是您需要的格式。实际上,我不知道 Tableau 期望什么格式,但 YYYYMMDD 通常是日期的正确顺序,因为它会正确排序为文本。你可以使用任何你想要的替换,以上面的查询为例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多