答案:不同数据库获取星期几的方法各异,MySQL用DAYOFWEEK或DATE_FORMAT,PostgreSQL用EXTRACT(DOW)或TO_CHAR,SQL Server用DATEPART或DATENAME,中文需CASE转换英文名。
在 SQL 中获取指定日期是星期几,可以使用数据库自带的日期函数。不同数据库的语法略有差异,以下是常见数据库的实现方式。
MySQL 提供了多个函数来获取星期信息:
SELECT
DAYOFWEEK('2025-04-05') AS day_of_week, -- 返回 7(星期六)
WEEKDAY('2025-04-05') AS weekday_num, -- 返回 5(星期六)
DATE_FORMAT('2025-04-05', '%W') AS weekday_name; -- 返回 Saturday
PostgreSQL 和 Oracle 支持用 EXTRACT() 提取星期,但需配合 dow(day of week):
SELECT EXTRACT(DOW FROM DATE '2025-04-05') AS day_of_week; -- 返回 6(星期六)
若要获取星期名称:
SELECT TO_CHAR(DATE '2025-04-05', 'Day') AS weekday_name; -- 返回 Saturday
SELECT DATEPART(WEEKDAY, '2025-04-05') AS day_number, -- 返回 7(星期六) DATENAME(WEEKDAY, '2025-04-05') AS day_name; -- 返回 Saturday
多数数据库不直接返回中文星期,可通过 CASE 语句转换:
SELECT
CASE DATE_FORMAT('2025-04-05', '%W')
WHEN 'Monday' THEN '星期一'
WHEN 'Tuesday' THEN '星期二'
WHEN 'Wednesday' THEN '星期三'
WHEN 'Thursday' THEN '星期四'
WHEN 'Friday' THEN '星期五'
WHEN 'Saturday' THEN '星期六'
WHEN 'Sunday' THEN '星期日'
END AS chinese_weekday;
基本上就这些方法,根据你使用的数据库选择对应函数即可。注意各数据库对“一周从哪天开始”的定义可能不同,必要时可调整设置。