MySQL中判断日期是星期几的实用方法详解
在MySQL中,可以使用WEEKDAY() 函数或DAYOFWEEK() 函数来判断日期是星期几,其中WEEKDAY()返回数字0-6(0代表星期一,6代表星期日),而DAYOFWEEK()返回数字1-7(1代表星期日,7代表星期六),这两种方法简单高效,能轻松满足日常开发中对日期星期判断的需求。

核心函数介绍与使用
-
WEEKDAY()函数
该函数以星期一为每周起始,返回值为整数:- 0 = 星期一
- 1 = 星期二
- 6 = 星期日
示例:SELECT WEEKDAY('2023-10-01'); -- 返回6(星期日)
-
DAYOFWEEK()函数
该函数以星期日为每周起始,符合欧美常用习惯:- 1 = 星期日
- 2 = 星期一
- 7 = 星期六
示例:SELECT DAYOFWEEK('2023-10-01'); -- 返回1(星期日)
扩展应用:输出中文星期名称
若需直接显示“星期一”等中文名称,可结合CASE语句或ELT()函数实现:
-- 使用ELT()简化转换
SELECT ELT(DAYOFWEEK(NOW()), '星期日','星期一','星期二','星期三','星期四','星期五','星期六');
-- 或使用CASE语句灵活定制
SELECT
CASE WEEKDAY(NOW())
WHEN 0 THEN '星期一'
WHEN 1 THEN '星期二'
WHEN 2 THEN '星期三'
WHEN 3 THEN '星期四'
WHEN 4 THEN '星期五'
WHEN 5 THEN '星期六'
WHEN 6 THEN '星期日'
END AS week_cn;
实际场景示例
-
筛选特定星期数据
查询2023年所有星期四的订单记录:SELECT * FROM orders WHERE WEEKDAY(order_date) = 3 -- 星期四对应WEEKDAY值3 AND YEAR(order_date) = 2023;
-
统计每周活跃用户
按星期分组统计用户活跃度:SELECT ELT(DAYOFWEEK(login_date), '日','一','二','三','四','五','六') AS week_day, COUNT(*) AS active_count FROM user_logins GROUP BY WEEKDAY(login_date);
注意事项
- 时区影响:函数结果受MySQL系统时区设置影响,处理跨时区数据时需注意一致性。
- 性能优化:对大量数据按星期筛选时,建议在日期字段上建立索引,并避免在WHERE子句中对字段进行函数运算(可改用范围查询预先计算)。
- 日期格式校验:确保输入日期为有效格式(如'YYYY-MM-DD'),无效日期将返回NULL或错误。
通过WEEKDAY() 和DAYOFWEEK() 函数,MySQL提供了灵活的日期星期判断方案,开发者可根据业务习惯选择函数,并结合条件语句实现本地化显示,在实际应用中,注意时区与性能细节,即可高效处理基于星期的数据查询与分析任务。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/7907.html发布于:2026-07-30





