首页/数据/SQL 速查/WEEK / YEARWEEK 周编号与 mode 参数
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

WEEK / YEARWEEK 周编号与 mode 参数

按周分组统计时的口径控制:MySQL 的 WEEK/YEARWEEK 有 mode 参数决定周起始与计算方式,PostgreSQL 固定 ISO 周。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
-- mode=3 为 ISO 口径:周一为一周开始、第 1 周含 4 天以上
SELECT YEARWEEK('2024-06-01', 3);   -- 202422(ISO 口径)
SELECT YEARWEEK('2024-01-01', 0);   -- 默认 mode:年初日期可能计入上一年最后一周
SELECT YEARWEEK(created_at, 3) AS yw, COUNT(*)
FROM orders GROUP BY yw;

PostgreSQL

PostgreSQL
-- EXTRACT(WEEK) 即 ISO 8601 周号
SELECT EXTRACT(WEEK FROM DATE '2024-01-01')::int AS iso_week;  -- 1
SELECT date_trunc('week', created_at) AS week_start, COUNT(*)
FROM orders GROUP BY 1;
MySQL 默认mode 由 default_week_format 决定(常见为 0:周日开始)
ISO 口径MySQL mode=3 / YEARWEEK(d,3);PostgreSQL 原生 ISO
建议跨系统对数前统一用 ISO:周一为周首、跨年周号连续

易错点

  • 用 YEARWEEK(d) 默认 mode 与 YEAR(d) 拼键:年末年初会出现丢失/重复的周(跨年周归属不同)
  • 只取 WEEK(d) 不取年:12 月底的周号与 1 月初撞车,分组统计会合并两年的数据

数据来源与参考

  • MySQL 8.0 Reference Manual · WEEK
  • PostgreSQL Documentation · Date/Time Functions and Operators
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌