You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中WEEK(FROM_UNIXTIME(1525212000))结果不符问题咨询

问题原因:WEEK函数的模式差异,不是Bug!

这不是MySQL的Bug,而是WEEK()函数的模式参数规则和你用的在线工具不一致导致的,我给你理清楚来龙去脉:

首先,先确认时间戳对应的日期:FROM_UNIXTIME(1525212000) 输出的是 2018-05-02(周三),这个是准确的。

核心差异:WEEK函数的模式参数

MySQL的WEEK()函数其实支持第二个可选参数mode,它决定了两个关键规则:

  • 一周的起始日(周日/周一)
  • 第一周的判定标准

不同工具默认的mode不一样,这就是结果差异的根源:

  • 你的MySQL默认用的是mode=0:
    • 一周从周日开始
    • 第一周被定义为「包含当年第一个周日的周」
    • 2018年第一个周日是1月7日,所以1月1日-1月6日属于第0周,从1月7日才开始算第1周。这么算下来,5月2日就落在第17周,和你得到的结果一致。
  • 在线工具通常用ISO周规则(对应MySQL的mode=3):
    • 一周从周一开始
    • 第一周被定义为「当年至少包含4天的周」(2018年1月1日是周一,所以1月1日-1月7日直接就是第1周)
    • 按照这个规则,5月2日就是第18周,和在线工具的结果匹配。

解决方法

如果你想得到和在线工具一致的结果,只需要显式指定mode=3即可:

SELECT WEEK(FROM_UNIXTIME(1525212000), 3);

执行这个语句会返回18,和在线工具的结果完全一致。

如果希望全局默认使用ISO周规则,可以修改MySQL的系统变量(需要管理员权限):

SET GLOBAL default_week_format = 3;

如果要永久生效,记得修改my.cnf(或my.ini)配置文件,添加一行:

default_week_format = 3

然后重启MySQL服务即可。

内容的提问来源于stack exchange,提问作者Farid Movsumov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:45:45