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

Posted

技术标签:

【中文标题】BigQuery 从日期字段中提取星期作为日期范围【英文标题】:BigQuery extract week as date range from date field 【发布时间】:2021-12-23 18:28:59 【问题描述】:

我想从 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 或类似的东西。有可能吗?

【问题讨论】:

作为字符串类型的单列,或两个单独的列,每个列都有日期类型 【参考方案1】:

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

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 

【讨论】:

【参考方案2】:

考虑以下方法

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

输出类似

【讨论】:

以上是关于BigQuery 从日期字段中提取星期作为日期范围的主要内容,如果未能解决你的问题,请参考以下文章

如何从PHP中的两个日期范围内提取每个星期一和每两周一次的星期一?

在 bigquery 中的最后提取日期计算未来 18 个月的预测

在 bigquery 标准 sql 上提取两个日期之间的小时数

在 BigQuery 中对具有 DateTime 值的字符串字段进行范围查询

努力从 BigQuery SQL 中的时间戳字段中提取特定月份的 DATE

Bigquery 自定义一周的第一天(默认为星期一)