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 值的字符串字段进行范围查询