首页/数据/SQL 速查/DAYOFWEEK / WEEKDAY 与 DOW 星期计算
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条
函数速查60 条
变更与事务52 条性能与执行计划72 条

DAYOFWEEK / WEEKDAY 与 DOW 星期计算

取星期序号做工作日/周末判断:三套编号(MySQL DAYOFWEEK 周日=1、WEEKDAY 周一=0、PG DOW 周日=0)混用是经典 bug 来源。

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

MySQL

MySQL
SELECT DAYOFWEEK('2024-06-01');   -- 7(1=周日 … 7=周六)
SELECT WEEKDAY('2024-06-01');     -- 5(0=周一 … 6=周日)
SELECT DAYNAME('2024-06-01');     -- 'Saturday'
-- 筛选周末订单
SELECT * FROM orders WHERE WEEKDAY(created_at) IN (5, 6);

PostgreSQL

PostgreSQL
SELECT EXTRACT(DOW    FROM DATE '2024-06-01');  -- 6(0=周日 … 6=周六)
SELECT EXTRACT(ISODOW FROM DATE '2024-06-01');  -- 6(1=周一 … 7=周日)
SELECT to_char(DATE '2024-06-01', 'Day');        -- 'Saturday'
SELECT * FROM orders WHERE EXTRACT(ISODOW FROM created_at) IN (6, 7);
MySQLDAYOFWEEK 周日=1;WEEKDAY 周一=0;DAYNAME 返回英文名
PostgreSQLDOW 周日=0;ISODOW 周一=1(ISO 8601)
建议统一用 ISO 编号(周一=1)表达业务腔调

易错点

  • 同一句“周六=6”在 MySQL WEEKDAY 与 PG DOW 里编号不同,跨库迁移周末统计会差一天
  • 对列做 EXTRACT/WEEKDAY 过滤无法走索引;按天过滤改用时间范围条件

数据来源与参考

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