MySQL中查询星期几的函数详解

MySQL中查询星期几的核心函数是DAYOFWEEK()WEEKDAY(),两者都能返回日期对应的星期信息,但在具体使用和返回值上有所区别,掌握这些函数能帮助开发者高效处理时间相关的数据查询与分析。

主要函数对比与用法

DAYOFWEEK() 函数

  • 功能:返回日期对应的星期索引,范围从1到7
  • 返回值规则
    • 1 = 星期日
    • 2 = 星期一
    • 3 = 星期二
    • 4 = 星期三
    • 5 = 星期四
    • 6 = 星期五
    • 7 = 星期六
SELECT DAYOFWEEK('2023-10-01'); -- 返回 1(星期日)
SELECT DAYOFWEEK(NOW());        -- 返回当前日期的星期索引

WEEKDAY() 函数

  • 功能:返回日期对应的星期索引,范围从0到6
  • 返回值规则
    • 0 = 星期一
    • 1 = 星期二
    • 2 = 星期三
    • 3 = 星期四
    • 4 = 星期五
    • 5 = 星期六
    • 6 = 星期日
SELECT WEEKDAY('2023-10-01'); -- 返回 6(星期日)

辅助函数与扩展应用

DAYNAME() 函数

直接返回星期的英文名称,更直观:

mysql 查星期几的函数,MySQL查询星期几的日期函数

SELECT DAYNAME('2023-10-01'); -- 返回 'Sunday'
SELECT DAYNAME(NOW());        -- 返回当前星期的英文名

DATE_FORMAT() 函数

通过格式化输出星期信息,灵活性最强:

-- 返回英文全称
SELECT DATE_FORMAT('2023-10-01', '%W'); -- 'Sunday'
-- 返回英文缩写
SELECT DATE_FORMAT('2023-10-01', '%a'); -- 'Sun'
-- 返回数字(0=周日,1-6=周一到周六)
SELECT DATE_FORMAT('2023-10-01', '%w'); -- '0'

实际应用场景示例

查询特定星期几的数据

-- 查找所有在星期一创建的订单
SELECT * FROM orders 
WHERE DAYOFWEEK(created_at) = 2;
-- 使用WEEKDAY()实现相同功能
SELECT * FROM orders 
WHERE WEEKDAY(created_at) = 0;

按星期分组统计

-- 统计每周各天的订单数量
SELECT 
    DAYNAME(order_date) as week_day,
    COUNT(*) as order_count
FROM orders
GROUP BY DAYNAME(order_date)
ORDER BY DAYOFWEEK(order_date);

中文本地化输出

-- 使用CASE语句返回中文星期
SELECT 
    order_date,
    CASE DAYOFWEEK(order_date)
        WHEN 1 THEN '星期日'
        WHEN 2 THEN '星期一'
        WHEN 3 THEN '星期二'
        WHEN 4 THEN '星期三'
        WHEN 5 THEN '星期四'
        WHEN 6 THEN '星期五'
        WHEN 7 THEN '星期六'
    END as chinese_weekday
FROM orders;

性能优化建议

  1. 索引使用:在经常按星期查询的日期字段上创建索引
  2. 函数前置:避免在WHERE条件中对字段使用函数,可考虑使用范围查询
  3. 存储冗余字段:高频查询时可考虑将星期信息作为冗余字段存储

注意事项

  • 时区影响:日期函数的结果受MySQL时区设置影响
  • NULL处理:输入NULL值时,所有函数都返回NULL
  • 日期格式:确保输入为合法日期格式,否则可能返回错误或NULL

MySQL提供了DAYOFWEEK()WEEKDAY()DAYNAME()DATE_FORMAT()等多种查询星期几的函数,开发者应根据具体需求选择最合适的函数,对于需要数字索引的场景,注意两者返回值的差异;对于需要直观显示的场景,DAYNAME()DATE_FORMAT()更加方便,在实际应用中,结合适当的索引和查询优化,可以显著提升时间相关查询的性能效率。

未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网

原文地址:https://www.html4.cn/8065.html发布于:2026-07-31