MySQL获取当前时间的星期几:方法与实例详解
在MySQL中,可以使用DAYOFWEEK()函数或WEEKDAY()函数来获取当前时间的星期几。 这两种函数虽然都用于返回日期对应的星期信息,但在具体返回值和计算方式上有所不同,适用于不同的应用场景。
主要函数介绍
DAYOFWEEK()函数
DAYOFWEEK()函数返回日期对应的星期索引,其中星期日为1,星期一为2,依此类推,星期六为7,其基本语法如下:

SELECT DAYOFWEEK(NOW());
执行上述语句将返回一个1到7之间的数字,表示当前日期是星期几,如果当前是星期三,则返回4。
WEEKDAY()函数
WEEKDAY()函数同样返回日期对应的星期索引,但星期一为0,星期二为1,依此类推,星期日为6,其基本语法为:
SELECT WEEKDAY(NOW());
该函数返回0到6之间的数字,适用于以周一为一周起始的场景。
实际应用示例
获取当前日期的星期几
要获取当前日期对应的星期几,可以直接结合NOW()函数使用:
-- 使用DAYOFWEEK() SELECT DAYOFWEEK(NOW()) AS week_day_number; -- 使用WEEKDAY() SELECT WEEKDAY(NOW()) AS week_day_number;
将数字转换为星期名称
为了更直观地显示星期几,可以配合CASE语句或ELT()函数将数字转换为中文或英文名称:
-- 使用CASE语句(基于DAYOFWEEK())
SELECT
CASE DAYOFWEEK(NOW())
WHEN 1 THEN '星期日'
WHEN 2 THEN '星期一'
WHEN 3 THEN '星期二'
WHEN 4 THEN '星期三'
WHEN 5 THEN '星期四'
WHEN 6 THEN '星期五'
WHEN 7 THEN '星期六'
END AS week_day_name;
-- 使用ELT()函数简化
SELECT ELT(DAYOFWEEK(NOW()), '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六') AS week_day_name;
处理特定日期
除了当前时间,也可以对任意日期进行操作:
SELECT DAYOFWEEK('2024-01-01') AS week_day_number; -- 返回1(星期日)
SELECT WEEKDAY('2024-01-01') AS week_day_number; -- 返回6(星期日)
注意事项
- 时区影响:
NOW()函数返回的是当前数据库服务器的时区时间,确保服务器时区设置正确。 - 函数选择:根据业务需求选择
DAYOFWEEK()或WEEKDAY(),注意两者起始日的差异。 - 性能考虑:在大型数据集查询中,直接使用函数可能导致索引失效,建议预先计算或使用持久化列。
掌握DAYOFWEEK()和WEEKDAY()函数的使用,能够灵活处理MySQL中的日期星期信息。在实际开发中,根据具体需求选择合适的函数,并结合条件语句或字符串函数实现更友好的显示效果,从而提升数据处理的效率和可读性。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/10602.html发布于:2026-08-13





