MySQL 中的星期几函数用于获取日期对应的星期几。常用的函数是 DAYOFWEEK()
和 WEEKDAY()
。
DAYOFWEEK(date)
:返回日期 date
是一周中的第几天,范围是 1 到 7,其中 1 表示星期日,2 表示星期一,依此类推。WEEKDAY(date)
:返回日期 date
是一周中的第几天,范围是 0 到 6,其中 0 表示星期一,1 表示星期二,依此类推。DAYOFWEEK()
或 WEEKDAY()
,因为它们的返回值范围不同。DAYOFWEEK(date)
WEEKDAY(date)
假设我们有一个订单表 orders
,其中有一个日期字段 order_date
,我们可以使用以下查询来统计每个星期几的订单数量:
SELECT
DAYOFWEEK(order_date) AS day_of_week,
COUNT(*) AS order_count
FROM
orders
GROUP BY
day_of_week
ORDER BY
day_of_week;
DAYOFWEEK()
和 WEEKDAY()
返回的值范围不同?原因:
DAYOFWEEK()
返回的值范围是 1 到 7,其中 1 表示星期日。WEEKDAY()
返回的值范围是 0 到 6,其中 0 表示星期一。解决方法:
根据具体需求选择使用哪个函数。如果需要星期日作为一周的第一天,使用 DAYOFWEEK()
;如果需要星期一作为一周的第一天,使用 WEEKDAY()
。
DAYOFWEEK()
或 WEEKDAY()
的返回值转换为人类可读的星期几?解决方法:
可以使用 CASE
语句将返回值映射到对应的星期几:
SELECT
order_date,
CASE
WHEN DAYOFWEEK(order_date) = 1 THEN 'Sunday'
WHEN DAYOFWEEK(order_date) = 2 THEN 'Monday'
WHEN DAYOFWEEK(order_date) = 3 THEN 'Tuesday'
WHEN DAYOFWEEK(order_date) = 4 THEN 'Wednesday'
WHEN DAYOFWEEK(order_date) = 5 THEN 'Thursday'
WHEN DAYOFWEEK(order_date) = 6 THEN 'Friday'
WHEN DAYOFWEEK(order_date) = 7 THEN 'Saturday'
END AS day_of_week
FROM
orders;
希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云