BigQuery 从日期字段中提取周作为日期范围

BigQuery extract week as date range from date field

我想从 bigquery 的 DATETIME 字段中提取星期作为日期范围。 从 these docs 我可以将周提取为这样的周数 EXTRACT(WEEK FROM date),或者像这样获取第一天作为日期 DATE_TRUNC(DATE(date), WEEK)

但是如果我想得到一个日期范围怎么办,例如,如果日期字段的值为 2021-12-23 04:30:00 并且说星期日是一周中的第一天,我想得到这个结果 2021-12-19 - 2021-12-25 或类似的东西。可能吗?

根据您想要的输出、单独的列或单个字符串,您可以尝试以下操作:

with sample_data as (
    SELECT date FROM UNNEST(generate_timestamp_array('2021-12-01 00:00:00', '2022-02-01 00:00:00', INTERVAL 1 DAY)) as date
)

select
    date
    , DATE_TRUNC(DATE(date), WEEK) week_start
    , DATE_TRUNC(DATE(date), WEEK) +6 week_end
    , LAST_DAY(DATE(date), WEEK) as alt_week_end
    , concat(DATE_TRUNC(DATE(date), WEEK)," - ", DATE_TRUNC(DATE(date), WEEK) +6) week_range
from sample_data 

考虑以下方法

select *, 
  date_trunc(date(date), week) week_start,
  last_day(date(date), week) week_end
from your_table    

输出类似