首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于值的BigQuery条件数据格式

基于值的BigQuery条件数据格式
EN

Stack Overflow用户
提问于 2022-10-12 17:05:26
回答 2查看 89关注 0票数 0

我需要一些关于基于值的BigQuery数据格式设置的帮助。源数据具有字符串数据类型,目标数据类型为日期。我需要根据输入日期的值将其格式化如下:

  1. 空值应保持为空
  2. 空字符串(“”)应转换为带有YYYY格式的空
  3. 日期,MM/DD/YYYY格式的
  4. 日期应转换为YYYY格式

g 210

以下是我迄今所做的工作:

代码语言:javascript
复制
SELECT input_date, CASE WHEN input_date = '' THEN NULL ELSE PARSE_DATE('%m/%d/%Y', input_date) END AS output_date FROM mytable

当尝试用YYYY DD格式解析日期时,上述case语句失败.下面是我遇到的错误:

如何解决YYYY DD日期格式?如有任何反馈,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-12 22:36:31

您可以尝试并考虑以下方法,其中需要添加另一个WHEN,然后使用regex匹配YYYY-MM-DD字符串,然后将其解析为所需的日期格式,如下所示。

代码语言:javascript
复制
with sample_data as (
  select NULL as input_date,
  union all select '' as input_date,
  union all select '2022-05-21' as input_date,
  union all select '05/25/2022' as input_date
)
SELECT input_date, 
  CASE WHEN input_date = '' THEN NULL
  WHEN REGEXP_CONTAINS(input_date, r'^\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$') THEN PARSE_DATE('%F', input_date)
  ELSE PARSE_DATE('%m/%d/%Y', input_date) END AS output_date FROM sample_data

输出:

票数 2
EN

Stack Overflow用户

发布于 2022-10-12 22:42:09

请考虑以下查询:

代码语言:javascript
复制
WITH sample_data AS (
  SELECT * FROM UNNEST(['', null, '2022-05-21', '05/25/2022']) input_date
)
SELECT *, 
       COALESCE(SAFE.PARSE_DATE('%m/%d/%Y', input_date), SAFE.PARSE_DATE('%F', input_date)) output_date
  FROM sample_data;

输出结果

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74045599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档