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:周一为周首、跨年周号连续 |