如何使用MySQL的WEEKDAY函数自动为新列填充星期几
MySQL批量填充星期几列解决方案
核心方案:利用WEEKDAY()函数结合字符串映射批量更新
MySQL的WEEKDAY()函数返回日期对应的数字索引:0=周一,1=周二,2=周三,3=周四,4=周五,5=周六,6=周日。你可以通过两种方式将数字转换为中文星期名称:
方法1:ELT()函数(简洁写法)
ELT()函数会根据索引返回对应位置的字符串,刚好匹配WEEKDAY()+1的索引(ELT从1开始计数):
-- 替换your_table为你的表名,date_column为你的日期列名 UPDATE `your_table` SET `day` = ELT(WEEKDAY(`date_column`) + 1, '周一', '周二', '周三', '周四', '周五', '周六', '周日');
方法2:CASE WHEN语句(直观易懂,适合新手)
如果觉得ELT()不好理解,用CASE WHEN逐个映射逻辑更清晰:
UPDATE `your_table` SET `day` = CASE WEEKDAY(`date_column`) WHEN 0 THEN '周一' WHEN 1 THEN '周二' WHEN 2 THEN '周三' WHEN 3 THEN '周四' WHEN 4 THEN '周五' WHEN 5 THEN '周六' WHEN 6 THEN '周日' END;
关键注意事项
- 先验证再更新:批量操作前建议先执行
SELECT语句验证结果,避免出错:
SELECT `date_column`, WEEKDAY(`date_column`), ELT(WEEKDAY(`date_column`)+1, '周一', '周二', '周三', '周四', '周五', '周六', '周日') AS 验证星期 FROM `your_table` LIMIT 10;
- 关键字转义:如果表名、列名是MySQL关键字(比如
day),必须用反引号`包裹,防止语法报错。
内容的提问来源于stack exchange,提问作者Tereza Pávková
相关产品推荐
相关产品推荐

