DAYOFWEEK()
是 MySQL 中的一个日期函数,用于返回一个日期是星期几。返回值是一个整数,范围从 1(星期日)到 7(星期六),或者使用 1(星期一)到 7(星期日)的范围,具体取决于所使用的 SQL 模式。
Sunday=1
):返回值范围是 1(星期日)到 7(星期六)。Monday=1
):返回值范围是 1(星期一)到 7(星期日)。-- 默认模式
SELECT DAYOFWEEK('2023-10-01'); -- 返回 1(星期日)
-- ISO 模式
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ISO_WEEK_DATE';
SELECT DAYOFWEEK('2023-10-01'); -- 返回 7(星期六)
DAYOFWEEK()
返回的值与预期不符?原因:
解决方法:
SET SESSION sql_mode
或 SET GLOBAL sql_mode
来调整 SQL 模式。-- 查看当前 SQL 模式
SELECT @@sql_mode;
-- 设置为默认模式
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
-- 设置为 ISO 模式
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ISO_WEEK_DATE';
通过以上方法,你可以确保 DAYOFWEEK()
函数返回的值符合你的预期。
领取专属 10元无门槛券
手把手带您无忧上云