MySQL中判断日期是星期几的实用方法详解

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

mysql判断日期是星期几,MySQL判断日期星期几函数

核心函数介绍与使用

  1. WEEKDAY()函数
    该函数以星期一为每周起始,返回值为整数:

    • 0 = 星期一
    • 1 = 星期二
    • 6 = 星期日
      示例:
      SELECT WEEKDAY('2023-10-01'); -- 返回6(星期日)
  2. 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;

实际场景示例

  1. 筛选特定星期数据
    查询2023年所有星期四的订单记录:

    SELECT * FROM orders 
    WHERE WEEKDAY(order_date) = 3 -- 星期四对应WEEKDAY值3
    AND YEAR(order_date) = 2023;
  2. 统计每周活跃用户
    按星期分组统计用户活跃度:

    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