从字符串转换 BigQuery 日期

Posted

技术标签:

【中文标题】从字符串转换 BigQuery 日期【英文标题】:BigQuery Date Conversion From String 【发布时间】: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 失败的原因。如果您不知道输出应该是什么,则无法编写查询(尽管我在下面进行了猜测)。 【参考方案1】:

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

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

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

【讨论】:

以上是关于从字符串转换 BigQuery 日期的主要内容,如果未能解决你的问题,请参考以下文章

bigquery 使用时区转换字符串日期时间

BigQuery 将 RFC 1123 日期格式字符串转换为 unixtime

字符串到日期时间转换 Bigquery

Bigquery 将字符串转换为日期时间

如何在 BigQuery 中以字符串格式将工作日月份转换为日期?

BigQuery 帮助 - 如何转换并转换为浮点和日期格式