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

Google Bigquery Legacy SQL如何将周起始设置为周一?

解决Legacy SQL中UTC_USEC_TO_WEEK()以周一为周起始的问题

我完全理解你的困扰——没法切换到标准SQL,又需要调整UTC_USEC_TO_WEEK()的周起始规则,让指定日期返回1而非2。其实通过简单的时间偏移处理就能实现,具体方法如下:

核心思路

UTC_USEC_TO_WEEK()默认以周日作为每周的第一天。要让周一成为起始,我们可以先把目标时间戳减去一天的微秒数(86400000000),再传入函数。这样相当于把所有日期往前推一天,原来的周一就会被函数识别为新一周的“周日”,从而让周数计算逻辑等价于以周一为起始。

示例代码

假设你要查询的时间戳是target_timestamp,原来的写法是:

SELECT UTC_USEC_TO_WEEK(target_timestamp) AS week_number

现在修改为:

SELECT UTC_USEC_TO_WEEK(target_timestamp - 86400000000) AS week_number

验证逻辑

举个实际例子:

  • 如果target_timestamp是某个周一的0点(微秒格式),直接用原函数会把它算进周日起始的第二周(返回2);
  • 减去一天后,时间变成前一周的周日0点,此时函数会返回1,正好符合你想要的结果。
  • 对于周日的时间,减去一天后变成周六,会被归为上一周,这样周一到周日就会被划分为同一周,完美匹配周一作为周起始的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:59:13