从字符串转换 BigQuery 日期
Posted
技术标签:
【中文标题】从字符串转换 BigQuery 日期【英文标题】:BigQuery Date Conversion From String 【发布时间】:2018-04-12 02:15:16 【问题描述】:我到处找,找不到这个答案。这是一个非常简单的查询,但我一生都无法弄清楚如何更改日期。
我有一个日期作为字符串输入,但它没有被拾取。日期被输入为 20170601,但我需要它采用日期格式,以便在 Tableau 中获取。我正在使用标准 SQL 并尝试将 PARSE_DATE("%x", date) as parsed、cast(date as date) 等,但我不断得到 错误:无法解析输入字符串“20170918”或该错误的某些变体。
#standardSQL
SELECT
visitorid,
parse_DATE("%x", date) AS parse
FROM
google.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 将 RFC 1123 日期格式字符串转换为 unixtime