如何在 BigQuery 的标准 SQL 中解析具有不同日期字符串的列中的值

Posted

技术标签:

【中文标题】如何在 BigQuery 的标准 SQL 中解析具有不同日期字符串的列中的值【英文标题】:How to Parse values in column with different date strings in Standard SQL in BigQuery 【发布时间】:2021-12-08 16:37:33 【问题描述】:

我在 bigquery 的表中有一个列,它有不同的日期字符串,它们被格式化为字符串:

 -------------------
| date              |
 -------------------
|2021-12-31         |
 -------------------
|2021-12-25T15:45:00|
 -------------------
|2021-11-15         |
 -------------------
|2021-12-08T09:00:00|
 -------------------
|2021-12-31         |
 -------------------

我尝试使用

EXTRACT(DATE FROM PARSE_TIMESTAMP("%FT%T", "2021-12-08T15:45:00")) as date

但这不适用于 YYYY-MM-DD 日期字符串。我收到错误消息

解析输入字符串“2021-12-31”失败

当我尝试时

PARSE_DATE('%Y%m%d', LEFT("2021-12-21T15:45:00", 10)) AS date

对于这列的两种字符串类型,我得到相同的错误消息。

如何将日期中的字符串格式化为 YYYY-MM-DD 格式?

【问题讨论】:

【参考方案1】:

考虑下面的简单方法

select *, date(date_string) as date_date
from your_table    

如果应用于您的问题中的示例数据

with your_table as (
  select '2021-12-31' date_string union all
  select '2021-12-25T15:45:00' union all
  select '2021-11-15' union all
  select '2021-12-08T09:00:00' union all
  select '2021-12-31' 
)        

输出是

【讨论】:

嗯,这再简单不过了。谢谢!这非常有效。

以上是关于如何在 BigQuery 的标准 SQL 中解析具有不同日期字符串的列中的值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BigQuery 标准 SQL 中查询 Bigtable 列值?

如何使用标准 SQL 在 BigQuery 中透视表?

如何在 bigquery 标准 sql 中展平结构?

BigQuery 标准 SQL 如何将行转换为列

如何在 BigQuery 标准 SQL 中获取数组的切片?

有没有办法在 BigQuery Standard SQL 中解析 XML 标签?