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

Snowflake中DATEDIFF(week)函数计算结果为何存在差异?

Snowflake DATEDIFF(week) 计算差异原因解析

Snowflake的DATEDIFF(week, start, end)函数核心逻辑不是按“7天为一周”的整数倍计算,而是统计从起始时间到结束时间之间跨越的周起始边界数量(默认周起始日为周日,可通过会话参数WEEK_START修改)。

针对你的两个示例分析:

  • 第一个查询

    select datediff(week,'2022-09-05T23:39:20.123-07:00', '2022-09-18T01:39:20.123-07:00');
    

    起始时间为当地周一,结束时间为当地周日,期间仅跨越1次周起始边界(9月11日周日),因此返回结果为1。

  • 第二个查询

    select datediff(week,'2022-09-07T23:39:20.123-07:00', '2022-09-20T01:39:20.123-07:00');
    

    起始时间为当地周三,结束时间为当地周二,期间跨越了2次周起始边界(9月11日周日、9月18日周日),因此返回结果为2。

补充说明

如果需要按“每7天算一周”的逻辑计算,可改用DATEDIFF(day, start, end)/7并按需取整;也可通过修改WEEK_START参数(例如设为1,将周一作为周起始日)调整周边界的判定规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:31:32