在 BQ 中以 yyyymmdd 格式转换日期(标准)

mtu*_*tur 1 google-bigquery

平台:BigQuery(标准)

我有一个按天分区的表 (table_name_20180101),我正在尝试编写一个查询,以便在任何一天,它只适用于前 7 天的表。

(例如,今天我想让它运行:table_name_20180607、table_name_20180608,一直到_20180613)

我试图通过类似的语法达到这个结果

FROM
`table_name_*` where _table_suffix > (tables up to 7 days ago)
Run Code Online (Sandbox Code Playgroud)

有没有人有关于如何获得这个的建议?我想尝试将 Current_Date() 转换为 YYYYMMDD 格式,然后减去 7,但我没有设法得到它。

谢谢大家。

Mik*_*ant 6

对于 BigQuery 标准 SQL

FROM `table_name_*` 
WHERE _table_suffix > FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY))   
Run Code Online (Sandbox Code Playgroud)

如果您需要排除当天,您可以使用

FROM `table_name_*` 
WHERE _table_suffix BETWEEN 
  FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY))
  AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
Run Code Online (Sandbox Code Playgroud)