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

MySQL 8.0.35中STR_TO_DATE用周数指令返回NULL问题咨询

问题解答

是否是Bug?操作有误吗?

这是MySQL 8.0.35版本的已知Bug,你的操作完全没有问题。

按照官方文档描述,STR_TO_DATE确实是DATE_FORMAT的逆函数,应当能还原DATE_FORMAT输出的日期字符串,但在8.0.35版本中,当格式符包含周数指令(%U、%u、%V或%v)时,STR_TO_DATE会返回NULL,无法正常解析。

可行的解决办法

1. 升级MySQL版本

MySQL官方已经在8.0.36及后续版本修复了这个问题,升级到对应版本后,你的原有代码就能正常工作。

2. 临时替代方案(无法升级时)

如果暂时不能升级版本,可以通过手动计算的方式还原日期,利用MAKEDATE和日期间隔函数来实现:

SET @_NOW=NOW(6), @_FMT='%YW%U';
SELECT
  @_NOW,@_FMT,
  DATE_FORMAT(@_NOW,@_FMT) AS `formatted`,
  -- 针对%U(周日为一周起始)的修复方案
  MAKEDATE(YEAR(@_NOW), 1) + INTERVAL (DATE_FORMAT(@_NOW,'%U') - 1) WEEK + INTERVAL WEEKDAY(@_NOW) DAY AS `parsed_fix`;

如果使用的是%u(周一为一周起始),只需要调整星期偏移的计算:

-- 针对%u(周一为一周起始)的修复方案
MAKEDATE(YEAR(@_NOW), 1) + INTERVAL (DATE_FORMAT(@_NOW,'%u') - 1) WEEK + INTERVAL (WEEKDAY(@_NOW) + 1) % 7 DAY AS `parsed_fix`;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:12:08