BigQuery 解析日期不适用于 %Y%W 格式

发布于 2025-01-10 05:30:36 字数 800 浏览 0 评论 0原文

一切都在截图中: 我有一个包含格式 %Y%W 的日期字符串的列。我想获取相应周的星期日的日期(例如202201返回2022-01-09

PARSE_DATE函数无法解析数据正确,它只是正确返回年份,但不解析周数

来自 文档

格式字符串完全支持除 %a 之外的大多数格式元素, %A、%g、%G、%j、%u、%U、%V、%w 和 %W

那么如何解决这个问题呢?

数据示例:

week_year
202204
202208
202203
202205
202202
202207
202206

此问题 相关,但没有提供问题的答案

在此处输入图像描述

Everything is in the screenshot:
I have a column with date string in format %Y%W. I want to get the date of the Sunday of the corresponding week (eg. 202201 returning 2022-01-09)

The PARSE_DATE function cannot parse the data correctly, it just return the year correctly but doesn't parse the week number

As from the doc:

The format string fully supports most format elements except for %a,
%A, %g, %G, %j, %u, %U, %V, %w, and %W

So how to solve the problem?

Data sample:

week_year
202204
202208
202203
202205
202202
202207
202206

this question is related but doesn't provide answer to the problem

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

酒中人 2025-01-17 05:30:36

丑陋但有效的解决方案(灵感来自这个):

DATE_SUB( DATE_ADD(DATE_TRUNC(PARSE_DATE('%Y%m%d',
          CONCAT(SUBSTR(week_year, 1, 4), '0601')), isoyear ), INTERVAL CAST(SUBSTR(week_year, -2) AS int64) WEEK), INTERVAL 1 day),
  

Ugly but working solution (inspired from this):

DATE_SUB( DATE_ADD(DATE_TRUNC(PARSE_DATE('%Y%m%d',
          CONCAT(SUBSTR(week_year, 1, 4), '0601')), isoyear ), INTERVAL CAST(SUBSTR(week_year, -2) AS int64) WEEK), INTERVAL 1 day),
  
虚拟世界 2025-01-17 05:30:36

这是有效的:

SELECT PARSE_DATE('%g %V %u', '19 46 1')

它将为您提供 2019 年第 46 周的星期一 (1)

this is working :

SELECT PARSE_DATE('%g %V %u', '19 46 1')

It will give you the monday (1) of the week 46 of the year 2019

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文