You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake中设置一周起始日为周一并获取日期字段的周起止日期

在Snowflake中设置周起始为周一并获取周起止日期

1. 设置一周起始日为周一

Snowflake通过WEEK_START参数控制周的起始日,其中1代表周一,0为默认的周日。你可根据需求设置会话级或账户级参数:

会话级设置(仅当前会话生效)

执行后,当前会话内所有周相关函数都会以周一作为周起始:

ALTER SESSION SET WEEK_START = 1;

账户级设置(全局生效,需权限)

若需所有会话默认使用周一作为周起始,需切换至ACCOUNTADMIN角色执行:

ALTER ACCOUNT SET WEEK_START = 1;

2. 获取指定日期对应的周起始(周一)和周结束(周日)

提供两种实现方式,一种依赖上述参数设置,另一种为不依赖参数的通用计算:

方式一:依赖WEEK_START参数

当WEEK_START=1时,直接用DATE_TRUNC获取周起始,再加6天得到周结束:

SELECT
    date_col AS 原日期,
    DATE_TRUNC('week', date_col) AS 周起始日期_周一,
    DATE_TRUNC('week', date_col) + INTERVAL '6 days' AS 周结束日期_周日
FROM your_table;

方式二:不依赖参数的通用计算

无需修改参数,通过日期偏移直接计算周一和周日:

SELECT
    date_col AS 原日期,
    -- 计算周一:减去当前日期的星期数(周日=1)再加2
    date_col - DAYOFWEEK(date_col) + 2 AS 周起始日期_周一,
    -- 计算周日:基于周一日期加6天,或直接偏移计算
    (date_col - DAYOFWEEK(date_col) + 2) + INTERVAL '6 days' AS 周结束日期_周日
FROM your_table;

注:Snowflake中DAYOFWEEK函数返回值范围为1(周日)到7(周六),上述偏移计算基于此规则。

内容的提问来源于stack exchange,提问作者Kai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:32:36