MySQL中如何返回星期几:函数详解与应用实例
在MySQL中,要返回日期对应的星期几,主要可以使用DAYNAME()、DAYOFWEEK()和WEEKDAY()这三个函数。 这些函数能够帮助我们从日期数据中提取出星期信息,适用于数据统计、报表生成和业务逻辑处理等多种场景,下面将详细介绍每个函数的使用方法、区别以及实际应用示例。
核心函数解析
DAYNAME() 函数
- 功能:返回日期对应的星期名称(英文全称)。
- 返回值:字符串类型,如
Monday、Tuesday等。 - 示例:
SELECT DAYNAME('2023-10-01'); -- 返回 'Sunday'
DAYOFWEEK() 函数
- 功能:返回日期对应的星期索引(1 = 周日,2 = 周一,...,7 = 周六)。
- 返回值:整数类型(1-7)。
- 示例:
SELECT DAYOFWEEK('2023-10-01'); -- 返回 1(代表周日)
WEEKDAY() 函数
- 功能:返回日期对应的星期索引(0 = 周一,1 = 周二,...,6 = 周日)。
- 返回值:整数类型(0-6)。
- 示例:
SELECT WEEKDAY('2023-10-01'); -- 返回 6(代表周日)
函数对比与选择建议
- 需显示星期名称时:优先使用
DAYNAME(),直观易懂。 - 需数字索引且习惯周日为第一天时:使用
DAYOFWEEK()(兼容美国星期习惯)。 - 需数字索引且习惯周一为第一天时:使用
WEEKDAY()(符合ISO标准)。
实际应用场景
数据统计与分组
-- 统计每周各天的订单数量 SELECT DAYNAME(order_date) AS week_day, COUNT(*) AS order_count FROM orders GROUP BY week_day;
条件筛选与业务逻辑
-- 筛选所有周末的订单 SELECT * FROM orders WHERE DAYOFWEEK(order_date) IN (1, 7); -- 1:周日, 7:周六
中文化星期输出
-- 使用CASE语句返回中文星期
SELECT
CASE DAYOFWEEK(order_date)
WHEN 1 THEN '周日'
WHEN 2 THEN '周一'
-- ... 其他星期
END AS week_day_cn
FROM orders;
注意事项
- 函数参数应为有效的日期/时间类型(如
DATE、DATETIME),否则返回NULL。 - 索引使用:在
WHERE或GROUP BY中对日期列使用这些函数时,可能无法利用索引,大数据量查询建议额外存储星期信息。 - 时区影响:若日期数据涉及时区转换,需先统一时区再计算星期。
扩展技巧
结合DATE_FORMAT()函数,可自定义星期格式:

SELECT DATE_FORMAT('2023-10-01', '%W'); -- 返回 'Sunday'
SELECT DATE_FORMAT('2023-10-01', '%a'); -- 返回 'Sun'(缩写)
掌握MySQL中返回星期几的函数,能显著提升日期数据处理的灵活性与效率,根据实际需求选择合适的函数,并注意性能优化,即可在数据分析、报表系统等场景中游刃有余。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/7127.html发布于:2026-07-27





