标准 SQL (BigQuery) 中整数 YYYYMMDD 的日期

Posted

技术标签:

【中文标题】标准 SQL (BigQuery) 中整数 YYYYMMDD 的日期【英文标题】:Date to Integer YYYMMDD in Standar SQL (BigQuery) 【发布时间】:2021-02-03 17:52:14 【问题描述】:

我需要在 Bigquery 中将日期转换为格式为 YYYMMDD 的整数。

我试过了:

PARSE_DATE('%Y%m%d', response_date)

但它不起作用(错误:参数类型的函数 PARSE_DATE 没有匹配的签名:STRING,DATE。支持的签名:PARSE_DATE(STRING, STRING) at [1:8])

response_date:日期格式

想要的结果:20210201 作为整数或字符串

如果有人知道正确的语法,那将非常有帮助。谢谢!

【问题讨论】:

【参考方案1】:

一种方法是算术:

select extract(year from response_date) * 10000 + extract(month from response_date) * 100 + extract(day from response_date)

另一种方法是FORMAT_DATE():

select cast(format_date('%Y%m%d', response_date) as int64)

【讨论】:

【参考方案2】:

另一种选择(可能看起来很有趣/很傻,但很有效

select  translate('' || response_date, '-', '')     

然后你可以对结果字符串进行任何你需要的转换,或者保持原样(作为字符串)

...可以通过以下查询轻松测试

select  translate('' || current_date(), '-', '')      

有输出

但显然 - 最好的方法是使用 FORMAT_DATE(),如 Gordon 的回答 :o)

【讨论】:

以上是关于标准 SQL (BigQuery) 中整数 YYYYMMDD 的日期的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:如何在 C# 中启用标准 SQL

bigquery 标准 sql 获取 dayofweek

BigQuery:标准 SQL 中的 PI()

BigQuery 中用于 Google Analytics 数据的标准 SQL 还是旧版 SQL?

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

BigQuery 标准 SQL:从表中删除重复项